From nobody Wed Apr 8 01:17:16 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 BDE74324B23 for ; Wed, 11 Mar 2026 05:05:11 +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=1773205513; cv=none; b=F99FrC5QW3h5kQKDETwKbI7nw5tAxgylMiT3QgZ22UcFRDQAA0oGkbDECVXcLhlEIvk0nYQWKmoWrjZXprkbh6SNEfqgOyIcvWqvZe765Yyd3DJfFd21Rik+CbgMCHwtpyW+/xPukKhRsR2kg5PJKG2zmz9z8eDgrBT8VKiOPzc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205513; c=relaxed/simple; bh=upK6uBmdFj3L01J2+uso9YhOoCCeQIlN/0kiddAlHQU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=KIq8+uDK8ksfvXYmQuw2S+875r/xn1n7cv/mzhsqBCpKmtbuSc7TABFS5/tJY7GNVD0qBDvznwc7ONX+gbdvnYt4cBy7Z6wdmfHm3pfM/P1oxFW7Qv4ET6ameYmmBMi1dhNlnW8j+8dgkP/1Z4+4Y5ZEyaQK+JcQecjSIX/o3aQ= 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=S0uHjVP/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=VpZANF50; 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="S0uHjVP/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="VpZANF50" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62B3VANc614004 for ; Wed, 11 Mar 2026 05:05:11 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= z4EIReUVZDLLFKrNuhEc4keZuSe+ZzG9lS8i32XVEH8=; b=S0uHjVP/AnAiRjiN JFlaibyCbMlTt7nrBx9YSmHSfyDLpKORcUxRoWa4/ugbl4qTjNfNeaeZhVAxT83y kdF78mBH06pFGvQ1FOLoz41r55abDUYOcc7/Jm/aUHsj1hLLoWGAr1cUY7so4URA mCALXe+ttum3Gz2HKbi/SuzRL/Nb5fsu7GatO3pARhpfmRTRMR/S1rjgl5bTxNrY e3j43VLzNvwNTp9fqlS+24K0g8KqbU/Ci2zbWR89fmiHpEQ6UWXFbXRlWmis0fHg nOF22paV4Tvus0SCksgCsJrgbx1gLvZ5cb+vvmqG+5vgXR80ZUCazyoCT1Qs/92t AetBcQ== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cu0jf085u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:11 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8cd81ce6fdcso3147318885a.3 for ; Tue, 10 Mar 2026 22:05:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205510; x=1773810310; 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=z4EIReUVZDLLFKrNuhEc4keZuSe+ZzG9lS8i32XVEH8=; b=VpZANF50mbEJPbJl9fClkQk+OWqpGEiNRe+XBv4XTeiEaGsgH7BxkQ5gH6EPx4GRho AsZwpJMZ8fykIDABERdJSgPNkq09NNOQlTaznPKrftcqo1gbyeEXsKNCCo9ze+P8PIyH ihgb9xrj4uujQj6JWHmeB5hlMBOVlUR1EW7qGl09XHhdsHC4OEdNIeOMcTm56EgKzQLv CJ6IJnuWKGf2Vc1WA9qaTpThgJNfJFFCRiyY0y/3myyjsCjfbK/Q8CnsVzCf1n4H0/gW EsLM5vQjhCM4z28AFYT8RS+b2ODaJg5DkjxidJqm9w5hESuGFPwpo7babLoGOqdQRxX+ 5CLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205510; x=1773810310; 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=z4EIReUVZDLLFKrNuhEc4keZuSe+ZzG9lS8i32XVEH8=; b=HepToIFt01ZuSMGbFFM81s4aSYlOsMdmpKS1NJ0cjMndV/PdY6MGwoOSR3CygeBx0r ycjo+hL2jDD1bKzdPO3z+e1YUjbSX4m64nKlPrbqnSaXErM1grBqnejZy9lxAIUZKvCZ RvOmq3o/pU0RVs6wJmRqnKA6brKC7/w20Rl4uWebiN/rpeX5QAoGuJXyeyPWaiy+x2u8 mdG/lSsYBCJlwpsVf1iL9cHVJx+LLNdbrwNuOPG1ZQZ8S4GoF8pWl/hwnIlzcRxdYtYK HDGUJWFHz/NrmZGHMy1Duf2JP/pXLCxzFp7rCkNcCAkxjtv6Okuu0jbOTJx03F0JspKl eZnA== X-Forwarded-Encrypted: i=1; AJvYcCX95Yu9ff8T0PpnPqoazNgus2cW0kqWttUxTMSA28XLf3D0in5yNJesAS8HL7Xh1hknu3T6CK0T4L3kCHk=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5FBfGY+TBKJ0pVjbYkorL+VHR52llde4MyLQJgEUs0Ok7aGjv wwvnSO79xTj51zVU2S3UlitIs5pO+Nkm6vc7SQecxI3EGDZ1i5z9AYdMwYvtyh2zKBfmXcHRghe cKajniR5nCdZbl8kbdEbsXQDUfodqr+7j119U9YU7GdsraP0I9ZCfTW9Id9xp7NNa2MY= X-Gm-Gg: ATEYQzyiHRa4ODUmNs3DuYAWACuxfE8bl2iEZ3ReJZ2Pw9mdci5F9S3+x2Bb/QqjIxs N1C+XfyYTrIX2NMWkyP1tlVHkyrx25bQe09gemFDbIV89U8J0r6s3J4x4/EV9EdFwCJjIWqhRWW b7faoXS8vJfvm3Ve96hKjaN/a+UGeTi5Ou892x6gghhuYGMyDzNKNn5ZwPgWkcULOPeuca5tpLY FVoOltiPu4B1RwhQOJxnICWf1tyRoBTuuJh5scQb2/G19epbaynPhBjtHTEkbwX29LWdiI96z6G Uep4B7oM6h41oqL1Xk+m6kALGW9XOIq14RG7jgkbKSZ3UUpp2LFAi8kYlFILd0AtDPV6yga7+UL 3sU8CufjN8Ji+YEbzMN7Mg+LOstOT2OYVNi1QZdUD53aVnvSgnZMxa+uWL+NIuPOg+6wcrCCAUn TX5xxqJfvO6GqfQzF1YvyfvIsb2XB6jjHDSPU= X-Received: by 2002:a05:620a:4485:b0:8cd:98c1:762e with SMTP id af79cd13be357-8cda1a56dd6mr173832485a.63.1773205510023; Tue, 10 Mar 2026 22:05:10 -0700 (PDT) X-Received: by 2002:a05:620a:4485:b0:8cd:98c1:762e with SMTP id af79cd13be357-8cda1a56dd6mr173829485a.63.1773205509578; Tue, 10 Mar 2026 22:05: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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:07 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:02 +0200 Subject: [PATCH v3 1/8] 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: <20260311-iris-platform-data-v3-1-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@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.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6161; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=upK6uBmdFj3L01J2+uso9YhOoCCeQIlN/0kiddAlHQU=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgAFqDolu63ZYTEYBbJ+rNqr1zfdMJDfIxS7 Ef/YsmriI6JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AAAKCRCLPIo+Aiko 1fc3B/9j2jNlSMK7bUjKfGmV/cmenjJYbbq3NwiS8mcYCJaYmRQFaBqUWrYGMnFvVhTMkkeBNo9 MAdwYSw9NS9JP2rNeBBARQt0nkrltk6/Clr4IjUT+xFErKPJTC2c+1guv6cianZXFflw0FZV89q 4LiBX39bKfBZrBYzm0VtLhzlMgdGJxfvNwtifUNkSE8ui6rT5MWfrzutM4vPyLaXcg9dq1TsbIb EoSLNwMJu47YXSLQGrV39BQ930LTiE6rlqIIQq2XvtrZMKFBLwNpSC/tJkU6gzCu5eq/G9bhOYr ljQ4pr0XurxEd8POM5MOBfNwnnO194i7K++YiO14uy+44PgQ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: i73r9gwlIngg_kj0CYl5q2OXuKS3e88O X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX30s8xAxf21QO bH2dsFYH4tLpEgHRxRZ/kwdNverSO2BosjnSWMCDjMEbjfy3x3+DkMw9wGhIB+nRA8yjZLSO4Y9 4tncZuUWylqk+SgjDAGwFAaInOPJRmjF0VdlsqubsPuM0mlpYSa80U9ADXtxcC+gr2iyty3Gksq OcJoc7sIGABWnSC2C/tBAFZTubvkDPfMRDnBvz8+xFWnuj+LudZtFQVL6tROX9OmlocNZfjzpFN /rk6Jzde50aPHhQSdhdExZ3NWO3d/X4xcEO1TxWbG7o94RPXGXqxzaQqwRVKXlKfS5SYtOlYQY0 c94VXae4Tf2JiaRkJjW/DKap3fg/h3HqhdX1Jq7cXL8x39BljUdRp1YxnN8j0m4/URZzy1QRLak faInvU0IvIckrUDMVhetVKMFN8CXcs5laSSpS5JYfeqw9CrJ41lnTgBRHkFdVzPPOLZrjH5zZz0 tgbfLMv20ZSPk/F42yw== X-Authority-Analysis: v=2.4 cv=FMMWBuos c=1 sm=1 tr=0 ts=69b0f807 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=hYMYe-gnznq9qBW6PAEA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: i73r9gwlIngg_kj0CYl5q2OXuKS3e88O 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0 clxscore=1015 impostorscore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 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 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 Wed Apr 8 01:17:16 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 B2739327C08 for ; Wed, 11 Mar 2026 05:05:15 +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=1773205517; cv=none; b=LC0Wj4LVksLj2gzy+KmxBxdpd3XAsGTqISirpWbf39ZOdU66eUZYsMyEXK/18RvsKLZYqlDez1AxuYyW1+t7Y5nXVeOdumlK7FJGjaERWFHBneUOt80YWbS9ooH706ZdmmHhfaS8i37n3zWK6+hlmSXN6v0k/XtVYDdMgpeuzk4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205517; c=relaxed/simple; bh=dKd+e7VXpOLrs33EkmmfTfblgiU21vmALyxPTYH2etM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Y0skGSiIeo0Ik/JEjhE1c2zVzNPDSJ3yRQsNxrZ1OYCfFQhD3AWBoH/X6Hf3IOa/O0+8Oba74iCwQM0nbbUen5LosFr71Q42urY/uguNxNVv7v8YGtrrfkOLDUVfVtVvhqPOUGm5Pb0Kghw/u0YOituoNYNjCH4cMxB5JEvIZuo= 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=LGMYShwe; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=HLuWY+al; 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="LGMYShwe"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="HLuWY+al" 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 62B2KjM1248813 for ; Wed, 11 Mar 2026 05:05:14 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= cDxcjhAqOb/kGi+fNZPYkRZoZ7JQxWwf0K5Qbx1wh5o=; b=LGMYShwexMrfSBBz +0dssBkMZ5q7QvbhDtMJxP/Uy/jhiF2marUV+9+AiQduM5jyHHzjaJLyiWnWanPo XFtnHOHtG5bAhXAMpV0f7c0rWz4I15WUAn7vr6+LjECwq7TpnveFp3cUBpY8J8Gt u3wWijC6aQGP49eroIpyMz7JxrFjv55c9VwRXoCTlDWaAr5H7+5yRoh9jfIQ63CZ 72CPXhTjuN6qIMXDKtF7xSmRfejfgP/3iz/InXaZnj1ML9qJ32XT/ehk/Sssv1js HXZVGgQbckGBzgQS2OwXLwxnbCTRZ3I+EJf7b3EVT2v7HuuVUtadUw9Ylh0QWc8F pgMU2Q== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctqv11xgg-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:14 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cb52a9c0eeso11068455885a.2 for ; Tue, 10 Mar 2026 22:05:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205514; x=1773810314; 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=cDxcjhAqOb/kGi+fNZPYkRZoZ7JQxWwf0K5Qbx1wh5o=; b=HLuWY+alFl1T7hiawZPnhv/cxNeCDv15JcGkXG5AZJzYTnwNdKlJ+hWkD3HVJ1ibwq uKaVIVkkUjbSSl7zbhwIvcgm/nXpQ4pKhPCVS6Kb7rzkg1F0HrjnBlj15gxfBmhBZFo9 jOwONxGfA3Sc+RvUlPBUE58z6MEH2K6LVE4iSRXz9AEK4XMy2FiTP1WctLD4jUM12oXw dDVOezOYmZZ2fGLDls/Z2Icz4b6bLGX1QtWu5VqcZZgXVTpPbhRKDGRwve6VquYKXpsH mJf+QXoSmpoqTcUbuU9Zjj3jOyJekcNc+LuEt5SFHnRf9B3p8v02TpVBqgtIftf7B74q mwUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205514; x=1773810314; 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=cDxcjhAqOb/kGi+fNZPYkRZoZ7JQxWwf0K5Qbx1wh5o=; b=sO0p4W6xPeM2sliu91B93IcU9wqolipVxQsYO8QTzgpuk/dBT2+GWrgjg+KVchfXR6 enf/b/vrk0ddlApFliDSwi5qJctlceWqwKeCVAlXF62JWhrP+lM5Ffuv7lLmAHLx0Qlv 7b9chZfFZ0o10eUx61J0Xnv4JrUv2aOAsKz75q8OKcP7ziDpcXwWQ4CZlWgn6JPeDle9 EFZc3gkTF+z1z8790IHBD8qvTCrPfByrc0kqh77XYjqP8S9kD3KXdoLkYcbzWPWDyH+d jdZBBASeG1mn3Y1u/VHntMxh94EkVOcbcZq0WI7so9WX6bLYgmogD2brQVvDTI1opHPN hPUA== X-Forwarded-Encrypted: i=1; AJvYcCW9WtRncdbdCAAg8pkoK/c6H/NNo5yvGw6ln58u5GOeoa7ucCceLyeefWl+5yZROcDCctkV/6pPDxMkAho=@vger.kernel.org X-Gm-Message-State: AOJu0YyfAg3kJwPm3oc9EUzQkjvQW1h+HvFq7JRCM19VLy+eUj5JZpI2 ltqn2It/vPxIarYpm/b6Sj8wKVBoL06umW5JpupUFTlvYLPQhkSJs4TDh7FlW65mUiOEdBrm/jr m0LCg8K8bmVyXHL/+mJyljTJ2vRzNWRD6EL2bpi6VCvnFFnqECb6lhkr6EJYDWk6hEkk= X-Gm-Gg: ATEYQzxNbisiz1+MFjzwfoq25arF0g+lrcSUVQAGU45k1bXAUQyPkVz+n2dTNOTlkdN BTr/+S0FWGSjP1HkJQXEB27NL9LwS0IEx3vKsm3Ws+NEG4O8G1OR2dCi5AkwR5ALK4Xh5d6IK5n ygru/gYpMbdpTzUz9u4f4JMFpiG7au9TTW2xRF/a4J5uaJrUyo5cSdyjlbLk8+DZrkTHhHAZ0ZU GtD1O6OkSipADTG0EIRHkzwC+xWtM0diAWGClQ/2+yHL1mqbEHxArpJ0RZpHuaQ1XVM/rwrEh3Z y2jwqWqnfobKnXtF2ujcoV0HUr0Hslrocv9GFKM2pBVDhjN0j6YQPH2eCNjfgWr1SJnV3yY5Oj1 SYmYoQf2O3iEnNFs+XmTnUCOcfAnKDEXmyvs0INtkoNeT+J/E7yuiw35d4A1ZAfxqLcIXzCoeHW OgzVept5EHkWHtUL3BFNyZIEgvvNm+doFNyco= X-Received: by 2002:a05:620a:1a08:b0:8cd:911e:2c28 with SMTP id af79cd13be357-8cda1936b3cmr171659885a.7.1773205513885; Tue, 10 Mar 2026 22:05:13 -0700 (PDT) X-Received: by 2002:a05:620a:1a08:b0:8cd:911e:2c28 with SMTP id af79cd13be357-8cda1936b3cmr171657185a.7.1773205513469; Tue, 10 Mar 2026 22:05: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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:11 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:03 +0200 Subject: [PATCH v3 2/8] 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: <20260311-iris-platform-data-v3-2-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=6432; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=dKd+e7VXpOLrs33EkmmfTfblgiU21vmALyxPTYH2etM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgAXv2pf7kX2wiaYi5akWFnHVf3XWbCsFzEF C8jBMi7RQKJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AAAKCRCLPIo+Aiko 1chCB/4obfNBTcjckosdatnmMiNrIZfs2KniMO5fgqDXKQwAfuZS5pVpjFUhl5Sh5ntkqMoO06d pSTXIr6jmDwP1Atga7n4qF6lbl2dMzegYgW84yjNgFEZOkoi3oim0j3CuHAPgsmnfOAPIyZKb0X tBfiAVe/5gg3VUabphByrpJVkA+XbcSt5YE+xFGRkYJmYaTDToNd7FY53Mxrcf2/JqQMKKhUDVf eMBP35CTEYKbXxGPFyQ7nCFmoY2iiou/Gf+leSrXvwY59UYiaM0bzqz/eQWLk/MjkFGkBbPszBP h6j6a/Y6+kup61AT0q4k0rQocggoRSMKJmJtE8lxV6ui6i7e X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX2ewoFk0yqEFH +xV5umk6GzBuhkoGpohkBfLkEZMAF7qU9KxA6vorbZKu4trTVXE6z1+ya4KPzrZ9TUtquzYNIJr ZJwL2Zn2VWBylNrx3+YPsnt1wsy0yAW9M+CcsH0KiV+GrTehS79QV8ZzXpGAyePcK8KAOWOQZUz 87hbqvuFrpN1dbLLuCibh5uA/KidI5DM4c5q9QA4cEAHO5jfaT9Ywy2lgoOLbIdVZSeEvpwy6qj 6RbL7ScLm78uieeVlr8icEIsszRBB40UZkzEk/MicgSg924Xh4B/AQ4Jirdi3COgRgqCswrFJ86 Q4eDwAAl0bP6oCdU6EwMJQT2zbS1uZtNPJ7E15MhUQnrE9YA+Ucvqx4jG2JL2hr/bJXpCVGCTqw nTMdO6hCXIafnjYw5n5sWiTmLVvpT2tWr7Y3SAZDT5t4MV9DGGhWpKA7XLJEm8+Bzowg3TNYm7x Znk11eRXCcLRxJVqtIA== X-Proofpoint-GUID: FSktkdnA3qVmiVg2qStrpi41M0NMfRkY X-Authority-Analysis: v=2.4 cv=S5vUAYsP c=1 sm=1 tr=0 ts=69b0f80a cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==: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=LmgrmXmU8fDMlo1BKrQA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-ORIG-GUID: FSktkdnA3qVmiVg2qStrpi41M0NMfRkY 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 malwarescore=0 adultscore=0 bulkscore=0 spamscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 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. 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 Wed Apr 8 01:17:16 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 ED794322B8B for ; Wed, 11 Mar 2026 05:05: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=1773205518; cv=none; b=O/LBiRXhiAEF9R731ISbIFGNj4cKApWbKyLfOYLGSQbG7r7psqiDClJKo/8QRusyH9r4GgFwwrpWjCTihJKqj1DYgZw4NfNo0Cg8pJvwP8UUSlyR5VHp4H97PUo0srS/TVS3TIOJLiTFeXoS6LDZ42nYQT5nluOpJJ6G3Geo3X0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205518; c=relaxed/simple; bh=x2YTsex1Fv+Dc4RVscR+kAhkDi5JIRV/gMadA9jhh1I=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=A1FPa84aodrETs+kPan3mn4cfInJz3i1Eno/Amjz/7CHI/GL+qPnxP6DCQpQ4bJEfW3Bld2HVfKBAtWi+YN/qwXrcZSf5DhKIoFpl1f3MFSomaDLKYNLs9a+qQIXFZr2ZgBVOuGwsuoYncpw5YppIj/66x0UWFF07XH0kUVr/CM= 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=Cw8dgU/8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=IoQcjfcr; 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="Cw8dgU/8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="IoQcjfcr" 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 62B2jWrZ2179919 for ; Wed, 11 Mar 2026 05:05:16 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= Gl1IWKRec7l4UUGWy7jC01iWiWXGTiFco1mvc7rwi8w=; b=Cw8dgU/8VqrGryvL ROfoAi7o0BtD9cPu/JxqMGzzvdEHV0E7+WzY+c1ATCkxmaN9Hm1IK0IUOTCWhg8T /9V1iZSa5aSZPxzfJHBRGYgG6516TYVbA1PxeOZ6R/Yj8XvnJHK4J3MrbeH5G/qR R5wrSuLtOFEqVOzo14awJcqm2MoDqRKK2WP14ZTedGBhHRNpFHMcpHTEG076pzu8 9jQoEcGV4sNUDV6g9vp9k6yjHbaDU+3P30ab8dxsT30bgKXSq2kesRB54lNkvV+7 MuxVp5l7cz+BjDAPjUa9FI/zqNNIOgr+MCgiWaa/gpKpftUHvKSBAfJtcplisPOb 054Obg== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctqvssxyv-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:15 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cd7c4ab845so1564717785a.1 for ; Tue, 10 Mar 2026 22:05:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205515; x=1773810315; 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=Gl1IWKRec7l4UUGWy7jC01iWiWXGTiFco1mvc7rwi8w=; b=IoQcjfcrg/KkRv96nsGYNd4Zn9Km83x6nYwcUNPySEJ3Txp29tzGMwOnK67/SWVCkw 82SYYN9oEp2nOhpEmNrFM1/ZeZ6Ur6bHkLLJc5CgSsb2L4PHdcWvcKQgkc2Yhuc8Pqie qj7wCHzjQRufO0KoA/YbmctwylYL/On0XNDPHMteii6+I5JWuUtCCkA2mO2897QXiVYB Zp+U782BYg5vW+9Y+MMi7b1V4aUEjh6lEaJg3nBcHjbxVfTGRsL9jVt748x//aHV06fx ctxcDez7QiwBgM7WVlyRsgKJSXRen+e37SUnJOu/mS9Ggmuvn7+3fwv0uZ6eCyCgudfD Tk6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205515; x=1773810315; 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=Gl1IWKRec7l4UUGWy7jC01iWiWXGTiFco1mvc7rwi8w=; b=VM91eEMoAMuruBXlvcPU09+DhQB9Mk8zYMk/wDYnn8fDSsWCzJOf+jWLpqf7OXZJgC fpxKSlOgSbToIUuNXZDJAeBVfo3MiA6u2asHfvZO7KLe+I83DxxBfimjHvo3ekxsG9h3 mMU2Xo0jWa5yT/14NUJpHwiG0UtWb8nheMEhA0DiYvlor7vszGhr7tb6bui+maRct+SQ zxOlEWSZ10XYBq4c9rQuNjCkYvtRsL99HwwwBCf+79IlmS1wlQUZFHSjVDk0ve0xK3qS HeM2krYkRQ/UOKZdvk6YbdoDyz+VWLBkuBE1PMUj2NC2vjzfhfxkpjAnstx0fjHbHbVQ z+lw== X-Forwarded-Encrypted: i=1; AJvYcCUGPTjtkxAt2yo6/Ip68TsowbpiUrKA48AjFUWr6YVoVn6lLqmyBuUbPQ8N2KXJ1U58Qr2peXa2W6U3RDE=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+6mZcNbxDU/6pLgKoT18lpyhZm6EzmQEUyybS31I00doxTn1c WdB2Bo/53K01rq2cDtNxNPTyDFq7SS7ifqaKBKwXFWNtfRCJHkRFEKKNbp9fjl0TKB70tIv4mGs WVLXHyXTVFabo3Zxnac/waQTJ7hSKLVsq9mobOwTSRMgQ59/R6HEqNu57j5lRJxL51hY= X-Gm-Gg: ATEYQzwBt+vXGJFHMQBVuRDvJ8b4ApMS3N/S4BcErtmFesEULNj8RkrtPNaq/wUcyHK 6WXINi+048K5uMqNyLSNgHxZOib7xbCISmfPXR3/tNEnhtdUY1NJPN2dkHcPUkfIW6fq0EVibon Pufy1hdtakQAv6yakU63Taxl+fLx0c6KXB8zt1BPw+UThtf2LKlT4mgxbNbojwHMUP9eDYzknXx EWGLHWRs7VtKRRZ0666UvHH7ABrPWqnqvlGv03NsrGo+pX3pqZb3rAxMP6W0fcDJFG4LcTmWGyZ 5wAf6P6hzDiNIz30zNnaUhYN4Kw6CUZsfPefn2FbC9n0tQj6lRfRIEDrbia7mmfTO4VCP/2C+69 rIfRado5dwgkP84Qq9RCkCREngad15HWdyPZh4b3ttm+1qmcIFsUlY3gLyVsf6HmzigXbhKdtHa uVZpT2s1DXoQB8tyhu17xFuzlmZhD3lYqufS8= X-Received: by 2002:a05:620a:6cc5:b0:8cd:93b7:ebc7 with SMTP id af79cd13be357-8cda1a7cf07mr162641985a.74.1773205515355; Tue, 10 Mar 2026 22:05:15 -0700 (PDT) X-Received: by 2002:a05:620a:6cc5:b0:8cd:93b7:ebc7 with SMTP id af79cd13be357-8cda1a7cf07mr162639185a.74.1773205514908; Tue, 10 Mar 2026 22:05:14 -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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:13 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:04 +0200 Subject: [PATCH v3 3/8] 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: <20260311-iris-platform-data-v3-3-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@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.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=2169; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=x2YTsex1Fv+Dc4RVscR+kAhkDi5JIRV/gMadA9jhh1I=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgA7umYwsrWqOOHUxQMNNVLL8r+ciaNCqOMM Fejqk0mQx+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AAAKCRCLPIo+Aiko 1bM+CACwuBYrlspEb+mUOghUAeE8Ns+bfgb+Z60SAmQoKek1etvwAf9Cl2VNg4Za8uen15mZQQc MuCbuDoRAF6ETWuYcitJp/jTcpBAdf1H9tjpEQQHnUTGlUtnrWQ76stpbax7kkhrc7EnmmiNOCC FZQCHlJGSuN37SzixqMfn8t/csHYO+SwoNOGm0Z37MSnRzmy2S13FYD4N25ollfgaGc+AsRln7w KAVwV/yDnTAzzYjb1eJkSuu/CoSxMbqXcJKbkRQ22EEpnJerCKl+7XwA0bm94VCY+0xMvtfcQX6 21rTlO2zUyZhpjbeKsVgGgX30D8oeqsL/Vyzcd2zmFTDwAmG X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX73p6MMHRlQlA bqKuso0O6CAr1F31GoUO9VW3fCuWrObUx/xSfHa1BmhVLffHPM60OOo7TuHiJ5KHNxY5VJemmLV 8AmpYzRk/NVg+2v9wiBSmmxPPWp6363MH4I6Kl+NeI4sxLCFSGgVMOcH2ZVZRURJOyHbpL5F4sM U8bS7uYPFx4yG9S+mZKCgxFb9effH7VcyKeT4rA8inAv4JiJpoAuI+6n+9+t5Q+74MW8eP1lPCG XA6FYvSD4HpgeYn7OLll7RoY8uaHO6JiGleieolfev3c7lxsuz15UYBX2xBnyBl6//PssgFVpGi XzAYKEDbJa+9VgITslzbeXpMxN3PD4FUC67Xii++cUiFFWeH3qxP2aymn1f6drDVkT2akHOM/Pp am1zNqWvGJSYqu7G1XUmWvpcoNm3gkVrX5Fc3ZDQMwg933sjpFo6aqUrFuZBcY3qScYpbEuwsnu LIWiNufHAxW62vBWr3Q== X-Proofpoint-ORIG-GUID: ZhhdeIh0t5NV2TyNgpPllXkijbbbYSmn X-Authority-Analysis: v=2.4 cv=Lo2fC3dc c=1 sm=1 tr=0 ts=69b0f80b cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==: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=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: ZhhdeIh0t5NV2TyNgpPllXkijbbbYSmn 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 impostorscore=0 bulkscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 adultscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 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 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 Wed Apr 8 01:17:16 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 E5C0232B9A1 for ; Wed, 11 Mar 2026 05:05:20 +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=1773205524; cv=none; b=d5E4+0aiOO/TpcXMRDpfACa7hUHdz1B4+eRUH32IizB6Qw8oMoJMGcf1jNDEzuZo37gfZY4AW0WHHDQ7zuz4AFz2a4RKsKIfzwljrvbYv/tyrmQz87ErsqX3j3/O7IatV5jpNYSZdK6Y5pTEVPr1L6APJhDZLEF2In3qLfSFJjU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205524; c=relaxed/simple; bh=qZEWEqC9nnbwg6GK6Ro5kqgNwNhyvp/iupAMwL7BRyY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fvM8gCOi788dR+h/osUD1pIC6oYIj3OQbTNcje8/OTcYiLPgy06kJkL2FCJE9p2WwFOp2vqlLXm2PaYmFnOBqNG521W2/bVUvU/xiq8chRFNaAlPvUZn6uXbLLoTcdbnPlTW5O8xJ1C4RGXIwCFx6c8gEMLyb4Dv8mdLiuHssAU= 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=BC9IwIme; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZRQvbp3i; 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="BC9IwIme"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZRQvbp3i" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62B06YKZ1265806 for ; Wed, 11 Mar 2026 05:05:20 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= InOP1SYUaxJagbDPtVhBtfPECnWpQJt5GlM2IGHxXl0=; b=BC9IwImeAXXfNnhF UUIL5dTMz7B+uwvf5Y059RX7lyPqhcv4TrNB0CJSsFqjAu0emlyVjnOcXQlKUBKm XZ2d6ydpM1Qebn6O72ad6mr8NV9xzstgEUrEjftoNrcrul6lfRJ4Ru8EFgqtFOde irYlUtUHxP+Y8K3U3kk4Cau6j0w7dZD7ww+rdfMymyQBneviNIKq/ECyCoJnqETB a2JLD9qGG5fD47NjDX46PEFD9T5am5DujcJCiaQJIOBxYny5G7XMPvM9oKZLFG4Q ZYznyLIp1wHHASGjgPYsWF1Zu5tW4Sn1YRoS5P2wBA2cMEbzPH0eNGyIY9WZDNZb AtuZ4w== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctpkfjca9-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:20 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8cd820c6a4fso2797435685a.2 for ; Tue, 10 Mar 2026 22:05:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205519; x=1773810319; 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=InOP1SYUaxJagbDPtVhBtfPECnWpQJt5GlM2IGHxXl0=; b=ZRQvbp3iakwHFTOJENEt49w5j+DnqY+0htou8pPf0HmDO6pOwd+eX6lP2mZJiW0Sml IJnKfzVMVMvTT0FUbeCqSO6MAajbd+PgeZXYjg0cVusGWrgEWB7i9MW+yAZR5FnQVE/u 0mj4dmPartGgRLbbMsY11PEj7hxTMpx+v+1Yh6AYlM04/+CVT+ToyqY0MX4uMAg07BHH CNpXGWd3VHVlnzLaaCoWiBWHRVJA/gmsgnaec6u0oozCL98qAJgOV4Kq03euocjYBxRp 3z4oW8pO7gz//fEWM1M2HOUDOCOY+ladEYnfoPB/TGMIg0iKPGQeycActX1a9qQritAz ESWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205519; x=1773810319; 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=InOP1SYUaxJagbDPtVhBtfPECnWpQJt5GlM2IGHxXl0=; b=e2MhwFX0cZCbXl+0N7gR4KSlk1oeopD6gMIkUZyzPQSXBmllYoeOIlGv1VuzC7be4y mFzxJYmVPoIXEC9mrUIsvyX/LXrUNCZYtDQKooI8s3GC6+nONH+p7l5OJ9jHeIYsEBSm DOpg+cgxs08vjJxzbcxFgr0WdFOzISliDHBpF5xq4vvLAv5KaCvjzfY5p8qv/+GAICwg fwAjZAc3/hflazx7RJVE0hJvBomq680i4XYJsHiz7azpkzJSgLnAvwr1r0z+MRTAazoI 4Qq72VhXNEdPdbfiMZqV0yK4H0aE6UjtGufSMW8+WJk9b7Nts5646jME2dnHGYfcK+cv oNow== X-Forwarded-Encrypted: i=1; AJvYcCWxXl8yVNyZh3CDS0WdZRktFvRJMx/e9en4/QvXcivoIm+zIaYNb6nsz1aie/pfu5qv8MzxeKFOqjpN6U8=@vger.kernel.org X-Gm-Message-State: AOJu0YwIWjcQhjbDnlLH46P5ny9QZvFjoF2z0y15tqY8vU4ykLql2maP MAsXAZLOH76HLoPan+p/MdWAfh3UzqZoel3KqB5X1mXkHjSX2NocRzErrQQgGKy8gFsNnf895RQ 2M0iH5IdXzv8Xm+rAkz7Onf+IPvqBWTygh/cZRRNnFBTki5v53sCEqqSGPBycNHhq0I4= X-Gm-Gg: ATEYQzzrSRd9yGzUORf9uc821dtKhHTYr0UsWLYcA6bZtpZnD4t/rl3UUByyqT6yZMj ARSlWdkI2WsyQHwTNtsa5wokP5lPGfVDil/W3/S1miPQWmOibCfDcaWmnuLdMI3DK0IKqBR7aJK vYRxGfYQXE9yTHW/D4lJuOBAPCEOUfMNTGSufd2Jml8EHTCvCdf0998jtj7nkvhXU2B1lF+W3J1 o9xHKw5c6OvzyNMR2r7B/hPnJEmifOLmRwQ1OCiaeZeBBjzbR/jmNitg7dfxCZIen/Wq0SqXaiO ZvQ338KfmqPevFyzfLN/Dhm6smRQ1EIDC6N4RzWo1ThUNUnj/lvso2KjYpGiLf7PYlHIPhwZnlG LlaEBVRGJn3eAabU5TUYpCh1T1Lu2qXz+aORF0UxVYf2LZ1MjWI8E+y+e2/tIqJb2nN8gO9bKCH RcFed8BdbhKHK/VQyG5r/8YrEFq8upA00JZFM= X-Received: by 2002:a05:620a:4588:b0:8cd:942e:82f6 with SMTP id af79cd13be357-8cda19ba4camr190201085a.2.1773205518699; Tue, 10 Mar 2026 22:05:18 -0700 (PDT) X-Received: by 2002:a05:620a:4588:b0:8cd:942e:82f6 with SMTP id af79cd13be357-8cda19ba4camr190194885a.2.1773205517419; Tue, 10 Mar 2026 22:05:17 -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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:15 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:05 +0200 Subject: [PATCH v3 4/8] 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: <20260311-iris-platform-data-v3-4-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=23662; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=qZEWEqC9nnbwg6GK6Ro5kqgNwNhyvp/iupAMwL7BRyY=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgAttkDeKVvMcVmc9rhfKy3fvurNVPxKrHUR /AlX9XJI7aJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AAAKCRCLPIo+Aiko 1ZzZB/9sZ4XLnlT0HvtTn09V7zoJmiKSQYzezS/H8vvSP0w83qPdjPSzmRpE67UucUyrhSUUzbY HrVftePpXBTUdeTGO1Xa1noYFIk5eKYXkJB4Ss+bLt1ebsBLbun10ICZdLxCbng7oQG5iNox0DW uNIk318bfpFCu18fTTGR3MkenQaxOTPvUXUaglLy+EluBu4nd36+eJwa2++2SvyyL8zE433ZILk ZNY/2lrBME0/nDUC1iEYVA9qpw8sKh2rNmEBTftfl90NpMS3zPKt5RTlNJJaqN3wEWn4NmOcGVZ DqWXeSlbldHW3gh/r/E2i2FMSE1aM0UIvSVFhAkj/8ej9yYY X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: mYPU5OHUaA6G5FJ6Gd0mqFyoJ3-29kHl X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX/F8T7ZQ4rKPu k5rbRTL8JG1985nylJQoOerAeYw2E7MZhL57DG8jHbt3lsACcV1JZRi1g0mydLD0nRifmvOCn84 Zt2V+b0k8mE9H+jo1z8Ngw7eClFMT67eMb13oCVHsTU8B2de4uqcCQBSPjMYju1RLGXIyL8npaT h/XoBRP7/JX8fgFXcevPDKQNlBeQmtzNQQGJZeZ/iox5it1w7/igwL729agUlxRP4FJ1HOuvmmp THSlmegfcjOfR5m3yPa7hFdtQB1/pvB7GuY3XT/87XnbFoE31rnj1zKkYaH1S3cGtDXQuP6htFD yEqUwU8lGYIkOl7ImMfD9Xz0EknTADpnA25Hpy+d8DeYpFcFaL9pg2MPqJjv3K+QgtUpJEofcyL pVrm+DTv7WwlFb2F+tOpniHi8jhCnlMMaHrlRfBqIo8FFC+z1k/EHkqy/KJLwg0SUMA1kmvjMFT Dd4gyZYoqPsLn8FgW0g== X-Proofpoint-ORIG-GUID: mYPU5OHUaA6G5FJ6Gd0mqFyoJ3-29kHl X-Authority-Analysis: v=2.4 cv=Gq5PO01C c=1 sm=1 tr=0 ts=69b0f810 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=GJ9kf5zHVpckMw0GqqUA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB: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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 Calling HFI instance-specific ops should not require double indirection through the core ops. Split instance-specific ops to a separate struct, keep a pointer to it in struct iris_inst and set it directly in the get_instance function. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 4 +- drivers/media/platform/qcom/iris/iris_common.c | 8 ++-- drivers/media/platform/qcom/iris/iris_ctrls.c | 46 +++++++++++-------= ---- drivers/media/platform/qcom/iris/iris_hfi_common.h | 3 ++ .../platform/qcom/iris/iris_hfi_gen1_command.c | 23 ++++++++--- .../platform/qcom/iris/iris_hfi_gen2_command.c | 17 +++++--- drivers/media/platform/qcom/iris/iris_instance.h | 4 ++ drivers/media/platform/qcom/iris/iris_vb2.c | 2 +- drivers/media/platform/qcom/iris/iris_vdec.c | 6 +-- drivers/media/platform/qcom/iris/iris_venc.c | 4 +- drivers/media/platform/qcom/iris/iris_vidc.c | 2 +- 11 files changed, 72 insertions(+), 47 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 9151f43bc6b9..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 Wed Apr 8 01:17:16 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 831A532572F for ; Wed, 11 Mar 2026 05:05:23 +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=1773205525; cv=none; b=bvzD6TSY5g/ajrBV6r4aYnkKlUKbhozWRdrDix6FES533k2/4/zlNXRPvnSLs3LIY1+di+AKSbVmCI9paEy8QX6nfdQW5xdHyuO22dIsvv9t9Vhc+CCoH1nlT2T5WDwkiYt6OAa4CFE/fWA3wrnYssWAndG/y7D1rL70iI0PvbM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205525; c=relaxed/simple; bh=etXo/1CAQO0LTBoznMAkbpHI2N9ZaWszWIVCFaOaevU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SAOTbMQHYA0YnqCEkRFukqDrw3SQSjXeQdSU3gKL6PlgcgVZYw/xW5BPR7GJrgo0IytTg8pBE1F0cpa8gUQjGtlThDyKROQOXQmEyn4n1kinxl5vnUMCmFIo+CSwAl1faDxPbX4fzqI/7Qp7zh3Cfo3zLC07deoaPIS46KHwTJ8= 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=jKbG4yCz; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=b4moEpt9; 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="jKbG4yCz"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="b4moEpt9" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62B3qhll303873 for ; Wed, 11 Mar 2026 05:05:20 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= XlqIufrB/anXjTpPdSMBAXRy9SKzPF953eJF/eJzX58=; b=jKbG4yCzAr1Hs5tU K1qxrM9TERK1fTRMnJm04tvfnxing/qIqEh1ETAsJYlzWbr9gFwIviscCOb0ZV89 sLlONcVCCcnm+91r+T16YXY1ia70W5MiNXqCnFBWg6Z1bjO1OCHICiDeedLuS3FO rDf6pBMgW1Y5PS+dukjsJP411g6G6csMfJmoNp/oIW+p0/1RqEnXSzsRVm5tzd6b XZT3cXPNzE26g6j05uZF/W6cFyJWMEGZNJ++r/ZqSTBQCmhVz64RpTnCqh7/9c/H IsHcpVj8tAjhgwtewwpqUTnrhqkZxzIivfz61vqNObYjjJWohe3lhNq7iRWH8DyZ GQqgSw== Received: from mail-qk1-f197.google.com (mail-qk1-f197.google.com [209.85.222.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cthjf3pws-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:20 +0000 (GMT) Received: by mail-qk1-f197.google.com with SMTP id af79cd13be357-8cd76ff19d5so2133914085a.0 for ; Tue, 10 Mar 2026 22:05:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205520; x=1773810320; 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=XlqIufrB/anXjTpPdSMBAXRy9SKzPF953eJF/eJzX58=; b=b4moEpt9LoyVtX5aYFpxxUiPsW7RG8+i+fLkwQs16+CSRJTnIYJHe9lAcqZvWkYIZ6 emFb7UYIvTHSc1mDLTJggAya8rE6Fp5qzODEKyMiaxqWnBhW2PshAIiXVV864UpSYjhI q0qgO74KFKfGIhLcNA3vVbjc3qLsW2P4YGMq/UoYh554fsWrxCqrPsSG4r50dMUJzr5Y DbKtQTgZTu80ef7RKpUzVKYyprWiG/tkSOJ0lH8237ShPJx2Q4AHoztct6o5CffEuJzq +yAleK11dPuaCNwTCcTZPyu8HZa177FdMYz5KC6DqKRAcxF/HZPN8J5g7J/3dY4mCY6k nGdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205520; x=1773810320; 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=XlqIufrB/anXjTpPdSMBAXRy9SKzPF953eJF/eJzX58=; b=G2O2LKNsMpNmv1/jvDDkfWoNOlWmax1mgzqNXk/L+adOQZHELgCESbG5RAdYUjCuW4 wtyddHHfDPS1VN4sGn8abM8nO/OsEawbx4AEEPdzd71oVLmTKsofq/jPIXCETgaR/vlw z+ttUNd7lIYZ31bvW5UR2P6a7jb6hrWukF7WbAGkHmob0did1pUfHVM4RrN42sWpzmZU mp5P1AxqEXyTdEAQnQyH9iDP28GGsu3r64Vj5ji58IISMRwNhxL4uDkuwYCJf8nAhlUt G5++/e3KdMYQFb9CJtus7L5+Q6/VW31Ayxeq5K62bzi6Gj1PmwcYOmAY97MiyrG+WAcj 8Q5g== X-Forwarded-Encrypted: i=1; AJvYcCWKOtomFv/o3mb2ZA1lL6JcgMcM/CripvPrnRZpUuZx7WLrDLgEkWBRPwFXckZEZ7vw3otYUgWFSwV45X8=@vger.kernel.org X-Gm-Message-State: AOJu0YxFh3xTVWxbnEJdD5pFyXvpZbMNjHTlXeUmnhBEvPdxILwYnnp3 7bkNiOhrXp7kMNnesHrl+ingWUty5fUBEbqg3a5plchzcPKmkJRCmmFjaIgvwBH9eseqUo3Lseu 9gDg1MPnw1iJNuTckVBGEUjFTzl0li8yyUf5W+Xc0c5YwkWRRUqzjnwFWOpmJMNc9wFQ= X-Gm-Gg: ATEYQzwLTJ9daF51kaM2T7EVvnNV+FqSztEjmN0PvZpZv2vpk2jgWaVhK7B79WCspTz Mo8WUuZF9R1ksrm1QqDuDFv9ndG/MZbice/IC1XdbfTsHm2DS42son6rqDUauee0J3zvgd+We2j Ts2vu+WTPy6wHkT0hCd5ZXRDgaHW94lXbooRN8drq5Rbx9kmurEtjK4+G14CbxEx0M78N/Jn06I aOX9BUNa0mS8MN6vYhmeg0lSmCKmauK6r4QRPBRak4ox+YYA1AisQGWLgMcVE8j537zeFRiEH0G CYnvE6RFhfZ86tG4tDxe3Xuk/PNQlfd37MzGui5E/rm5cMvpLKdaAe9JIgQiOY0HeLwftsvLM2Q YmpVQIlWtwDU70arIp9SUUjVrfz7IXyjHsO81bhiRHqHFy94CeWQmxWGk3HSiGRG4oGG4MBQexO JU/hKf6eq14UcMtku+Q7bG7J83J2+5aktRBls= X-Received: by 2002:a05:620a:1a94:b0:8cd:942e:82de with SMTP id af79cd13be357-8cda19b1a50mr145643985a.7.1773205519542; Tue, 10 Mar 2026 22:05:19 -0700 (PDT) X-Received: by 2002:a05:620a:1a94:b0:8cd:942e:82de with SMTP id af79cd13be357-8cda19b1a50mr145641685a.7.1773205519014; Tue, 10 Mar 2026 22:05:19 -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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:17 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:06 +0200 Subject: [PATCH v3 5/8] 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: <20260311-iris-platform-data-v3-5-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=15139; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=etXo/1CAQO0LTBoznMAkbpHI2N9ZaWszWIVCFaOaevU=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgAgsSkwEN+143tsnuybkPN02hcezIYfz5PA DprkYFsNJSJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AAAKCRCLPIo+Aiko 1fCHB/9w0N2fwG+OqLYJEKaiuhUkgeGvOmgxQ52K8TPPAhN8P04O5sz+uDalxQEarAnLGkbTTIg Z+McPNmfSCK+02DoemWOwW+B9XHZ39/xkYdmmv5AaR9sCrf7lNk+ic2tL8nwx3u8zPVgX4ixpkh ey6tpcaMvyRlsveRUeMTg4FPPGE77TPomC5mrSuYRLnWIzmiF/R98CiU6/aLsiMgvtMPLf6eTny NSssdBx/oIGfdmqzPhEjYOiagTpl0QIFpKB9ttg0WLRQP8f7GlUmjHhjkyj07/NL3yOp99W94nl t5iUxVb9wLOi3Ujutdv/BryBZKTfRgb+QfcpMPRRcc9aVWfK X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: xg3CRK23V2N1qV5Blk9mY9AIfttiHm9r X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfXwoA1x9Y1goY5 S8i1/rHT4UQNW37FIgonYWQm/G1F+xqPkfYK//bIwI+m5hgtg4X2WcwOfL5rAu0Ob8LfHDqGtP/ ofXZvz/Bh/QtUgeOYjNwduG2vGLaApX5fx3tc505mE/w/SRQc33wb9WnxGvS/bTolgRybcS2jiZ rbXGZElCxMinAE0LyjYtM2awB1ITdFOReXf4RhRJ9QvddERTdxhrk+qk9O/XgbZWtn2OO+ndrBT 0g4JjOZIqBASeOU8+z+v6I3+RATyHKgOYQSzbrgDdOzLfuHvO4EsCFptkFqvsiiCVgIrWrPuIo1 h4qct0mPIJQTeej+hV71EtRhcicqCMPu3DgRO93u/7dKP2tz84WNYp7Z8YQvdyt+ol9DPBo26c9 FbJ/swsWfmGFiZtqR5i8q8LIzl434clB9EL1lDNaKOtDjj8ZXKNdnB9vcFa4DyvGSVW/tJ88DJl QpiVgnPwjjWYs8Fvo9w== X-Authority-Analysis: v=2.4 cv=A71h/qWG c=1 sm=1 tr=0 ts=69b0f810 cx=c_pps a=50t2pK5VMbmlHzFWWp8p/g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=Um2Pa8k9VHT-vaBCBUpS:22 a=EUspDBNiAAAA:8 a=mB4mtV4qES501vYzmaIA:9 a=QEXdDO2ut3YA:10 a=IoWCM6iH3mJn3m4BftBB:22 X-Proofpoint-ORIG-GUID: xg3CRK23V2N1qV5Blk9mY9AIfttiHm9r 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 phishscore=0 clxscore=1015 suspectscore=0 bulkscore=0 adultscore=0 spamscore=0 lowpriorityscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 There is little point in having two different structures for HFI-related core ops. Merge both of them into the new iris_hfi_ops structure. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.h | 3 +-- 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, 32 insertions(+), 57 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index d10a03aa5685..1d9a435ee747 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -112,8 +112,7 @@ struct iris_core { u32 header_id; u32 packet_id; struct iris_core_power power; - const struct iris_hfi_command_ops *hfi_ops; - const struct iris_hfi_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..1c970243532a 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -9,8 +9,8 @@ struct iris_core; struct iris_inst; =20 -void iris_hfi_gen1_command_ops_init(struct iris_core *core); -void iris_hfi_gen1_response_ops_init(struct iris_core *core); +void iris_hfi_gen1_ops_init(struct iris_core *core); +void iris_hfi_gen1_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index a28b0c7ebbad..eea9cc3e5904 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_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_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen1_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen1_ops; } =20 struct iris_inst *iris_hfi_gen1_get_instance(void) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen1_response.c index 8e864c239e29..bfd7495bf44f 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c @@ -688,7 +688,7 @@ static void iris_hfi_gen1_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen1_response_handler(struct iris_core *core) +void iris_hfi_gen1_response_handler(struct iris_core *core) { memset(core->response_packet, 0, sizeof(struct hfi_pkt_hdr)); while (!iris_hfi_queue_msg_read(core, core->response_packet)) { @@ -698,12 +698,3 @@ static void iris_hfi_gen1_response_handler(struct iris= _core *core) =20 iris_hfi_gen1_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen1_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen1_response_handler, -}; - -void iris_hfi_gen1_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen1_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen2.h index b9d3749a10ef..b981a1ba6954 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -34,8 +34,8 @@ struct iris_inst_hfi_gen2 { struct hfi_subscription_params dst_subcr_params; }; =20 -void iris_hfi_gen2_command_ops_init(struct iris_core *core); -void iris_hfi_gen2_response_ops_init(struct iris_core *core); +void iris_hfi_gen2_ops_init(struct iris_core *core); +void iris_hfi_gen2_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index ffb70fd9499c..a875fa906193 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_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_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen2_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen2_ops; } =20 struct iris_inst *iris_hfi_gen2_get_instance(void) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index 8e19f61bbbf9..c350d231265e 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -977,7 +977,7 @@ static void iris_hfi_gen2_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen2_response_handler(struct iris_core *core) +void iris_hfi_gen2_response_handler(struct iris_core *core) { if (iris_vpu_watchdog(core, core->intr_status)) { struct iris_hfi_packet pkt =3D {.type =3D HFI_SYS_ERROR_WD_TIMEOUT}; @@ -997,12 +997,3 @@ static void iris_hfi_gen2_response_handler(struct iris= _core *core) =20 iris_hfi_gen2_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen2_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen2_response_handler, -}; - -void iris_hfi_gen2_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen2_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 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..75dd496e2984 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_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_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..d72d397a2c2b 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_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_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_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_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 Wed Apr 8 01:17:16 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 E0CD2322B8A for ; Wed, 11 Mar 2026 05:05: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=1773205524; cv=none; b=nDD97NBXjxcq7VB600fzyE2Zvt88LToVVcxLSM00BSJZ22+o6Bl3fOZt5EJ2lUy4qtqg/D3Mz2Ztnxlg14NsAwtsw93UuI4iXv0xoA5hXHw/WtDjPNAO/k5dt79Nm/LkR7MYYrwoyt2AzrV7x+2JyiTXvZVnyHZpItPpG51Y75Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205524; c=relaxed/simple; bh=CtWOxxNLvINQuoxRDW5FqCzOjuGwRgb6qMA/H9WAPS8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TadgJq2Mxj6sRiFM2nz3fgj05uBlssiSRWtKwVPpG9j9ER/kXORJZadSilFxs5fK0AAg5CYs9dhnjYHWdNRowr9jZC3IVX0hfETKtb+c3pPo+pHpS8zfZNOw64vrUf3g5pYn4Tp6lbvdr2sL1ENj9/eboY8enhR7mgYV6BnuQP4= 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=Twgb65T9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=DE7kdIkC; 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="Twgb65T9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="DE7kdIkC" 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 62B497hn3417129 for ; Wed, 11 Mar 2026 05:05: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= 5FbvBkSXHPmm0gZPtLIZSX2dSpBh1f3huzQHvkqUVcs=; b=Twgb65T9vaDPTARr GqaQS16RJS9dWwow6YmS7nDuY4WbdxYaQ0SG9ov5p4WJK15UWObcmJKo//0n6f28 VVvrZG9LnyFR9bk/BEidy6HYEp5qBb9b6Fhj5e5Xzahh/+Umcr8FhPLPNzglhL6G jKoMGGuY442q0ZhW3uQiMeGef+q98MqK7mFSycJrIcJmVLA9nDvpM9JNs7k/jyBK bhdgsHAun6S1hr/nhFnHmZW7XtQf6uRO3axP+vJLL2NsUjQhEZDvbqOND6sWNCoy nlFBZCnyo+Nlv4mxRk/8QeU3Mht3wEyC4OhVROhuYtr2zsoPZQSTFj0XbKr4Qtu2 AcOmRA== Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctja2beq7-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:21 +0000 (GMT) Received: by mail-qk1-f199.google.com with SMTP id af79cd13be357-8cb0595def4so449370985a.0 for ; Tue, 10 Mar 2026 22:05:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205521; x=1773810321; 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=5FbvBkSXHPmm0gZPtLIZSX2dSpBh1f3huzQHvkqUVcs=; b=DE7kdIkCOYxLy5F9KzVyTgGWq47OF90ICvoiuMITBr4/+0q/tG9UkmewajYR4P6+7F s19LiPjL9oiav6CSa1xs4FnW++frLGc/mMbuSoT2Rq6cErmajQag5JCe6GgPvrDLcxln k8lSg1MJ7tTCBS93dagBU4iSJ8bDEKcc9FvIiaab43NKmXAip9w/8tjZSttgtODkV0tW nBAKMKPXd+og66SBj0+5TUrVqTBL+Naj7koHk0SHNxxgPNjAE17WjP4zdfK9nFo5sefr dcU+wvnWTN7EJuxboBasopSwiHLHGHQoIeaN4rR3sMnE87F/Dxl93tO+wLatoyerZQY+ J3lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205521; x=1773810321; 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=5FbvBkSXHPmm0gZPtLIZSX2dSpBh1f3huzQHvkqUVcs=; b=ICnjb0ldEm9eSjAspz0RKsys1EPrnZmVTtjkjSS595w3WmHcYARAtdF4zlVJTTgDH7 RGG3cO3NOTFRe85NVFvSCkJr0dGkHdsaysvjlD5+m3uIbPaUIe5UKSRyMhgYf28UFMJr g5fw0SBCfTsMCFvsa8qajrJ9QMl+mzMYTMUae7bfK9z6jPIJ8/23Ir7Kj8pLxtHPlV8q NKNSir5Xt8wbZS+qZMLo7FYSS0KJWL7unomNkMaZ1LyPZ5veW4kLaQaz7Ju48fR+944y xQGXgAQ7USw9kbpmh6GTIV3V3IUSG/gjJY5Zp3HV5Sa+8gq7BszPZuLbQcsd5RL4h/mG h43A== X-Forwarded-Encrypted: i=1; AJvYcCVNZOuGFd8CUuPCykxuNJ1TeV8qydnrtnyrV7k8sQOoSQgcU7fLpb5kAh4Lh5LWX6M4xvALeTO9QtJM1dk=@vger.kernel.org X-Gm-Message-State: AOJu0YzN2JgoktuahaBhQeZESRS7PwADC7G9t7ByALthCDBrgh8Xo8n5 3pb2fZrTDYneOctDjQE+TFO6qPNz9uJXo0dIBiEPS+6cPPPk+MHh9Jvii+fk5a3hRTouV661odP hnWLVsHPR65CawCkUqQHg00O4WZrBbnwDLeaquck3kUn9Ji7r28ppvLVhgYNAgGjVdnc= X-Gm-Gg: ATEYQzwjeVrlzbgrR7JWJFE/Gj0Lrw/nIx/C/1stnQ4rpWuB3T5f2P5I4++fBTRA+9n fAiRhTuYe/aWNxMc1ySfNGehQX7eO+9LOs/wuIsyV5ZbCKRuddacKeGpZjkJLT9G9FT4NJvrez+ kT9/J1KTchU4ytqsUkVNdp9ljKimTRF9gPFkhCzFiFEn+/DLz7g5TTLI3YbplvnTp3PuHGMA4N9 zs/6pQW7I1mVeOniq536AHHHM8Ay+MEPZSDW+QmqpQ/QnxmpCxaPpEIlFIgSfy8SVQ19ij3tr5L gesZloXGZozS1Iv5AXlnjRS9F02ep5M+ozT0WtMZTVmGq70fAvZTcUPaLSUoVrwjpQkUqXOTJl9 MFwyKo3ECH2xV9IJo2jTli+QxvLGYy9yM8V84dDs7Y0czvPSAk1LIrXmnUIy12ZIz09HKzOhYIM 15DRl/TLv06gmkDZ8vXASa0tujgOe/X9jRY5w= X-Received: by 2002:a05:620a:1999:b0:8cd:8ce4:c0ad with SMTP id af79cd13be357-8cd93bec8a6mr676377585a.22.1773205521135; Tue, 10 Mar 2026 22:05:21 -0700 (PDT) X-Received: by 2002:a05:620a:1999:b0:8cd:8ce4:c0ad with SMTP id af79cd13be357-8cd93bec8a6mr676375985a.22.1773205520659; Tue, 10 Mar 2026 22:05: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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:19 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:07 +0200 Subject: [PATCH v3 6/8] 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: <20260311-iris-platform-data-v3-6-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=9065; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=CtWOxxNLvINQuoxRDW5FqCzOjuGwRgb6qMA/H9WAPS8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgBTDXsV4Y6pXIpaOh6SDciDbGkRiky1nT3g M+blNc0MM+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AQAKCRCLPIo+Aiko 1RZyCACx3PRUZdRyszanPrb28JzBKc3jk7ZhAfmWbw6OVbTsYbwYJDzFbYL2jCXBdgSIDW0gbgf bzt8im7CdaBsx2Ufpaiytb9QKJUHaPfoNkk6juQxQG22jsKJVLh5lno553xMIzLOtmjWlslBOyI /QMbWPWJEvgpU4RBvPTPsWaQLWmnd0WTs8bLSCTE8TYmzGvtyVVUXJINtpPsS9RLLbDZWOwh2Lf +GQmfn5YkUHPVitCG6vy5dHQeNe3XizrdFmt8vJq3nxLCZU7Lx8e7zVuXATKm7rZr+URtEmAm+h +s3xqayZnw5BSlyoVPyxY6cm3jwBkDhwIB5mkOOaAPFfVLDF X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Authority-Analysis: v=2.4 cv=c9WmgB9l c=1 sm=1 tr=0 ts=69b0f811 cx=c_pps a=HLyN3IcIa5EE8TELMZ618Q==: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=65xn1vM8G5_EQ4liwbMA:9 a=QEXdDO2ut3YA:10 a=bTQJ7kPSJx9SKPbeHEYW:22 X-Proofpoint-ORIG-GUID: qUHtiw6pFOYQ86HV8hePY4ZQTGb-fXzm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX0wt8fzViQBw/ 7xSUnyaLARiT1b+54Ex5y5LQn05hJ4dvUlptUTBkqPje+PjVJXUocAHXzYBapQE9F6iAja0v2P9 5zu1Q0Q99qkoUNgzd0dHCtLgghkfxL6gyD03KR8s2dL2y1MtKxhGO8X3r73jycqR4505A5SpS0A IAChVgn70CUwriDRmhVeCx3OpqVgib/5mZpTgYa+tUBI0ldU8okNICId1Pkio/BCyNbrBHiiZwD 7RNXgDzE7TBRBygyRmJOROysFHWnLmV64YXs7CC8vgLBh+pInLrF/r7BC0iuULPkwcwm2pBWUbT M9u3WOux1tuCphvPX3nQaGrhoC9BUMfwvJFpl/O1pY/ZZVZ/Zwi/zdOppJQfIVt/QNpre3DhN9u c3Y8Se1SVaw8UJGQX5G9mIPiJs/Boxx+cDKhiyOk6HpAIpxq37u3TL2sPU10e2mIaW5WHrfgZuX Zv5D/lcfA+cH4rPrfUg== X-Proofpoint-GUID: qUHtiw6pFOYQ86HV8hePY4ZQTGb-fXzm 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 clxscore=1015 impostorscore=0 phishscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 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. 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 1c970243532a..0479ba442b09 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -7,10 +7,8 @@ #define __IRIS_HFI_GEN1_H__ =20 struct iris_core; -struct iris_inst; =20 void iris_hfi_gen1_ops_init(struct iris_core *core); void iris_hfi_gen1_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index eea9cc3e5904..abf02f589a28 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_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_= 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_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen1_ops; } - -struct iris_inst *iris_hfi_gen1_get_instance(void) -{ - struct iris_inst *out; - - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->hfi_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 b981a1ba6954..f1d293759bc6 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -36,6 +36,5 @@ struct iris_inst_hfi_gen2 { =20 void iris_hfi_gen2_ops_init(struct iris_core *core); void iris_hfi_gen2_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index a875fa906193..6ce94f4dfe08 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_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_= 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_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen2_ops; } - -struct iris_inst *iris_hfi_gen2_get_instance(void) -{ - struct iris_inst_hfi_gen2 *out; - - /* The allocation is intentionally larger than struct iris_inst. */ - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->inst.hfi_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 75dd496e2984..d8d205fbd61b 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_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_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 d72d397a2c2b..0f8d67473c3a 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_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_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_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_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 Wed Apr 8 01:17:16 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 85135328B6D for ; Wed, 11 Mar 2026 05:05:25 +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=1773205528; cv=none; b=Baxo4IFJ6jE0UNT640FX0ImCzHVcANzS92SNjatTcUyG6vcf+ynv2THOY/KGImzAlgYWHiyXrQpewmfeRkYZ44jc9DgkowRDbYVbdhF//lLlUJFxG2uSvBqSWGfKhwptWvCc/NWy7KVPrrwYN397YkX1br3g/CGMsuyZ6HwSiW0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205528; c=relaxed/simple; bh=FUbmIoHGLNwiKXfLVAknWhwFGPEaclYtQAkg6M/9UUw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=X/0ZTeQ39d2UJnI3qMim9GwJa519wNYR0rTLCWKX+62Q0RJdIfhM2EUbnNCLwnDhjk1YBBJx8ffkIm4vq/lcb4pk068L+n8Fy10JD81fjhFlgxtJVUQMrJLEV+TYA1ksFcXRwqhtnhkS5ycw3XnDKp8KYO/bRACfkNYzIWqPcn0= 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=lCZ2x7gC; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QFhClBi8; 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="lCZ2x7gC"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QFhClBi8" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62ANZ8so1265796 for ; Wed, 11 Mar 2026 05:05:25 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= 5C7caV/1Iq2PjXOwz8HoFh/haAJb0LUoNCweFUwGWIc=; b=lCZ2x7gCgxrX21kx UI+/5HcS/SZlW+755m8zTeW791xs67nvUDNCsdh9M0nu60KXGq60cd7Njvhsd35+ h45fEv3WDaaTZCQjtXJbpJRdomWP3C3rc+ojvxv1Ax+3sATKB5kOSmu3oWVpDHQq +O5AMDhFfm3kHAeZud5H92inMzO+G1z9sGDJbuo+2eNQZpkDc08rFt0354oLqjna hoL5wim2mOhs2MdANtqCeYN88G+V5NLuY5zywjuaZmxSqAMu5speUkuWLNuW2C5S 6yzDGbw2lCIeMuvzveQ5O8pMZO6pvqlLbYD5cB7kvbRNCjt2PkBkedNCRPuW3vGE Nt9GUQ== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ctpkfjcat-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:24 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-8cd81be6f05so1890592385a.2 for ; Tue, 10 Mar 2026 22:05:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205523; x=1773810323; 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=5C7caV/1Iq2PjXOwz8HoFh/haAJb0LUoNCweFUwGWIc=; b=QFhClBi8bCNxkJ1Z+7y/5yn/dhYmW4pVNLMJs3cPxgUqcZGb+3ZLxVaF4Zo3zqyq/c NdeRrMo96xbFrvwQ++Tr6zb0SNbcS9kamsUaB4O2LmQOdD7C+9fkL9GlcJOZHGn0giTF LjEJGQq42oHYudecJ0z0rYtcNYScuHW4A76F3p24+NzKGSK/bAowwsG3N4Gt1zd8LR5g CMmTYzmzCZVy0P4DXGMxtAh06x/l0Pya9SlOElJdL89RhBrLldnmSUrIBsPNNo1zOKvB LSOacTiSDfpSVtOAGFuxaLTEAP/PsBzUi1By1GR15wNJ8mhk0qVAYxBxnamJ1tvkrfyk XyCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205523; x=1773810323; 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=5C7caV/1Iq2PjXOwz8HoFh/haAJb0LUoNCweFUwGWIc=; b=bum9nAVmqibr0HvsqFUi3wh1kmSsgD/zATSKixGBtyLWIAkDwEREd8dpxdCTIwgh38 Z4XuM/RgD5HajQ2jzBr6TG7V0OD6auaElfjyeWrpDuFbHvxdS6AgXF51693Uz33YbIBH ba83Bl6IRv5Yg/Inkl6YhLSnbaOyGaDHAno3yCQMjT1yNn4a97SBEBfy1NXldU8NOlR2 SN8UPBG4zxnkkyUJtOqdQnAWMoc+mANjzbLf09aL5LMPSyW7Kpno/9Db55WxNKAU1O+Q Gt43wjjwbCOYz8QRLHKTv6Pldt8j6x323EL6yeFgfFE4QfcwDjgDJhVw/gXLNcXzPPRx pa4Q== X-Forwarded-Encrypted: i=1; AJvYcCUyndNd6DmWYJBRpZtRHjPYitIFvl4Qd2fHEOB5gQYbaRzP1XoD59gR9FXWC7N7FjCre4YuiZmmE5KN+6I=@vger.kernel.org X-Gm-Message-State: AOJu0YycwlqlS7lploIZ2jGpv1/876/0DfgZlwCLMwnFS+bUIt5FgdLi +uTPqUKhwPBXtDueCvyt1qyBBWm+0T1eZKfBE99CZ35CjbpYQ99WXHBEWNkCH/A+KPqh+Kd0R3p XW1ahyiSvgE8BlDzJEIt0+rzrD/uv36aYaF5XdZj3hj3dkMFivIjEdOlzjTFCWFQp2uca4TdL1e M= X-Gm-Gg: ATEYQzzhq15+1rAWkS846IlcEc7nJGJ31jIbIG3eJ8g19rR2Q69VueOnOS/7ydDDGRJ OzPinSMwSg2w78+mXBp7uAsOE+MjjSRexTVPNdiCoYzV64E5eqs+XpxkYB0pNys3iG+F8Wf/BN2 8RY5mX9gZYRZvQhYZO15+Ehu7vDxEtOhRBXJLOzTwqv9rlu8u7j6PaAkOHsoUHoOjSGdXTQKLwz X/cW8dHwUT6BkEobiUdgNocuUezXybHt4KntCFR7eJKrh+4krmyjcTIgWcXOaW6zwDvLwDzSEaO CSSotB4xLJHcFfZbon0/jQ9PXlz9+/SkmB1G10APLfEczabB34ZuoOxe7k4yM2bJw/BnO3SLuD7 /clU4nSxz5gW82DaJ98InOpidRVsAI/PVG6RSovD1RwU+YWBlLi0eDVoLHZoFMHCLeormO3QwYz Z34pdqrFJ4xrJwhE31Yj+m2+y9hxQgF3vrnF0= X-Received: by 2002:a05:620a:45a9:b0:8cd:7ba1:cb with SMTP id af79cd13be357-8cda1adcf02mr162095985a.72.1773205522960; Tue, 10 Mar 2026 22:05:22 -0700 (PDT) X-Received: by 2002:a05:620a:45a9:b0:8cd:7ba1:cb with SMTP id af79cd13be357-8cda1adcf02mr162093085a.72.1773205522320; Tue, 10 Mar 2026 22:05:22 -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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:21 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:08 +0200 Subject: [PATCH v3 7/8] 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: <20260311-iris-platform-data-v3-7-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=45919; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=FUbmIoHGLNwiKXfLVAknWhwFGPEaclYtQAkg6M/9UUw=; b=owGbwMvMwMXYbdNlx6SpcZXxtFoSQ+aGH4ziIU+vvl2Ys0vjRRTLeqVrxpbL1Ff3Z72vO71G5 n7mBfPqTkZjFgZGLgZZMUUWn4KWqTGbksM+7JhaDzOIlQlkCgMXpwBMxCid/X9KHN/qMxm+fRHP uXWLpzzmnzbpVP66axGqUcVn2HTMduje1lVkffazsyrD/fWUez9vvJvGN10wOm/VWuOz9XXGRgk Stn3Gprsr36zg1hNpZtWYHqD8pK3Pkang5/njd5dkdXsZi1lzdDeGRQucOb7TXE7NXP5EfXLK7A v6MsoidcFJgdVPzj7u6lkfwDZr8fKfQnvs7yo5XKxoay3z2u7pq3+Yf0mmXohQ+Z/fe1M/+DVbh FSve8Pam/oj7HlX2X7jX3lCu00T9b3OXSt7dLjr83OLa5l/VMTmBM2oPPxZuvbeV4FV/8zXNfT/ 7VGYNMNlYe4H+fk5obsM+K6ffx7MtC5ybyhfSLbP8jsBAA== X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: PbzfCrJeYIie9JsAW6KuP24JrbVaRwOZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX7s1ZAVIg5gMk LIr+gg5FN2oapTHcigsIGgNxKvNvtVim5egWKTMjvRCmlJgB+io4fiioHIkhxjZBnesU2vj1YY8 cZUA7KCYVoKnLZtOx5OMp/dSdGXrXfnbDKBQOBxsUezvLYV6JR7T/OGZjeDZDFwpW2GscnD58VT 5lPm9Ehm/w1xdSoDO8GBykBD3dPM4o6wA4RXUMiPSsjJJu4lWI0BnV717mzAX9k/j6vnTGGUuC7 dpgnVGlCl0DbbaXzbERaoxdR0kANHrCvyH3Mp7d38Bbq0qvPcM/WxrHxsYTHGhRBdO5mRtgEpN6 FuVQbr2opoG4alha6iLg8yBDQ1MzkZmDQjqWT1lt41gZrqishuCCPKC/1qr+4XJ/OkwSkv3YUq+ cmgJQyyMemNcH78+VtSg/czCyf3hldIsqxnvnWfAVpEM4ccTMF1pmbo+PvM0bIGc4sBOQ7X7PuZ YfSbzLi18lCn7MOlDRA== X-Proofpoint-ORIG-GUID: PbzfCrJeYIie9JsAW6KuP24JrbVaRwOZ X-Authority-Analysis: v=2.4 cv=Gq5PO01C c=1 sm=1 tr=0 ts=69b0f814 cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=coRdw7kJwGx05Zhg8iIA:9 a=QEXdDO2ut3YA:10 a=NFOGd7dJGGMPyQGDc5-O: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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 clxscore=1015 priorityscore=1501 impostorscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 Having firmware-related fields in platform data results in the tying platform data to the HFI firmware data rather than the actual hardware. For example, SM8450 uses Gen2 firmware, so currently its platform data should be placed next to the other gen2 platforms, although it has the VPU2.0 core, similar to the one found on SM8250 and SC7280 and so the hardware-specific platform data is also close to those devices. Split firmware data to a separate struct, separating hardware-related data from the firmware interfaces. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 84 +++---- drivers/media/platform/qcom/iris/iris_core.h | 1 + drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 10 +- .../platform/qcom/iris/iris_hfi_gen2_command.c | 66 ++--- .../platform/qcom/iris/iris_platform_common.h | 79 +++--- .../media/platform/qcom/iris/iris_platform_gen1.c | 68 +++--- .../media/platform/qcom/iris/iris_platform_gen2.c | 268 +++++++----------= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- drivers/media/platform/qcom/iris/iris_vidc.c | 10 +- 10 files changed, 246 insertions(+), 351 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index f55b7c608116..22596fc6d02f 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -295,37 +295,37 @@ static void iris_fill_internal_buf_info(struct iris_i= nst *inst, { struct iris_buffers *buffers =3D &inst->buffers[buffer_type]; =20 - buffers->size =3D inst->core->iris_platform_data->get_vpu_buffer_size(ins= t, buffer_type); + buffers->size =3D inst->core->iris_firmware_data->get_vpu_buffer_size(ins= t, buffer_type); buffers->min_count =3D iris_vpu_buf_count(inst, buffer_type); } =20 void iris_get_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } @@ -366,7 +366,7 @@ static int iris_create_internal_buffer(struct iris_inst= *inst, =20 int iris_create_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; u32 internal_buffer_count, i, j; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -374,19 +374,19 @@ int iris_create_internal_buffers(struct iris_inst *in= st, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -442,7 +442,7 @@ int iris_queue_internal_deferred_buffers(struct iris_in= st *inst, enum iris_buffe =20 int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buffer, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -451,19 +451,19 @@ int iris_queue_internal_buffers(struct iris_inst *ins= t, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -501,7 +501,7 @@ int iris_destroy_internal_buffer(struct iris_inst *inst= , struct iris_buffer *buf =20 static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane= , bool force) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buf, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -510,19 +510,19 @@ static int iris_destroy_internal_buffers(struct iris_= inst *inst, u32 plane, bool =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - len =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + len =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - len =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + len =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - len =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + len =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - len =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + len =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -593,17 +593,17 @@ static int iris_release_internal_buffers(struct iris_= inst *inst, =20 static int iris_release_input_internal_buffers(struct iris_inst *inst) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; int ret; =20 if (inst->domain =3D=3D DECODER) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } =20 for (i =3D 0; i < internal_buffer_count; i++) { diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index 1d9a435ee747..70322f40ec1d 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -98,6 +98,7 @@ struct iris_core { struct reset_control_bulk_data *resets; struct reset_control_bulk_data *controller_resets; const struct iris_platform_data *iris_platform_data; + const struct iris_firmware_data *iris_firmware_data; const struct qcom_ubwc_cfg_data *ubwc_cfg; enum iris_core_state state; dma_addr_t iface_q_table_daddr; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 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 abf02f589a28..64309ca1849f 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -918,7 +918,7 @@ static int iris_hfi_gen1_set_bufsize(struct iris_inst *= inst, u32 plane) =20 if (iris_split_mode_enabled(inst)) { bufsz.type =3D HFI_BUFFER_OUTPUT; - bufsz.size =3D inst->core->iris_platform_data->get_vpu_buffer_size(inst,= BUF_DPB); + bufsz.size =3D inst->core->iris_firmware_data->get_vpu_buffer_size(inst,= BUF_DPB); =20 ret =3D hfi_gen1_set_property(inst, ptype, &bufsz, sizeof(bufsz)); if (ret) @@ -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 6ce94f4dfe08..ab728b831540 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 d1daef2d874b..1a870fec4f31 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -201,45 +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; + 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 hw_response_timeout; - 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; @@ -254,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; @@ -264,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; @@ -274,4 +247,44 @@ struct iris_platform_data { unsigned int enc_op_int_buf_tbl_size; }; =20 +struct iris_platform_data { + /* + * XXX: remove firmware_data pointer once we have platforms supporting + * both firmware kinds. + */ + const struct iris_firmware_data *firmware_data; + const struct vpu_ops *vpu_ops; + 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 core_arch; + u32 hw_response_timeout; + 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 d8d205fbd61b..1d8e080b580f 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -332,9 +332,34 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8250_data =3D { +const struct iris_firmware_data iris_hfi_gen1_data =3D { .init_hfi_ops =3D &iris_hfi_gen1_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, + + .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, + .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), + .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, + .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), + + .dec_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, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), @@ -355,10 +380,6 @@ const struct iris_platform_data sm8250_data =3D { .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, - .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, @@ -366,26 +387,10 @@ const struct iris_platform_data sm8250_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_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_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_data =3D &iris_hfi_gen1_data, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), @@ -404,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), .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, @@ -417,19 +418,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 0f8d67473c3a..416aa80d611b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -906,41 +906,15 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8550_data =3D { +const struct iris_firmware_data iris_hfi_gen2_data =3D { .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, - .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, + .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, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, + .dec_input_config_params_default =3D sm8550_vdec_input_config_params_default, .dec_input_config_params_default_size =3D @@ -997,50 +971,15 @@ const struct iris_platform_data sm8550_data =3D { .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 -/* - * 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 { +const struct iris_firmware_data iris_hfi_gen2_vpu33_data =3D { .init_hfi_ops =3D iris_hfi_gen2_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, - .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, + .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, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, + .dec_input_config_params_default =3D sm8550_vdec_input_config_params_default, .dec_input_config_params_default_size =3D @@ -1097,9 +1036,81 @@ const struct iris_platform_data sm8650_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, + .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), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +/* + * Shares most of SM8550 data except: + * - vpu_ops to iris_vpu33_ops + * - clk_rst_tbl to sm8650_clk_reset_table + * - controller_rst_tbl to sm8650_controller_reset_table + * - fwname to "qcom/vpu/vpu33_p4.mbn" + */ +const struct iris_platform_data sm8650_data =3D { + .firmware_data =3D &iris_hfi_gen2_vpu33_data, + .vpu_ops =3D &iris_vpu33_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8650_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), + .controller_rst_tbl =3D sm8650_controller_reset_table, + .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + const struct iris_platform_data sm8750_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_ops_init, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_data =3D &iris_hfi_gen2_vpu33_data, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), @@ -1120,10 +1131,6 @@ const struct iris_platform_data sm8750_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -1132,60 +1139,6 @@ const struct iris_platform_data sm8750_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), - - .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 /* @@ -1193,8 +1146,7 @@ const struct iris_platform_data sm8750_data =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_data =3D &iris_hfi_gen2_data, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), @@ -1215,10 +1167,6 @@ const struct iris_platform_data qcs8300_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_qcs8300, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, @@ -1227,58 +1175,4 @@ const struct iris_platform_data qcs8300_data =3D { .max_session_count =3D 16, .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, .max_core_mbps =3D (((3840 * 2176) / 256) * 120), - .dec_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++) { --=20 2.47.3 From nobody Wed Apr 8 01:17:16 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 9745232BF44 for ; Wed, 11 Mar 2026 05:05:26 +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=1773205531; cv=none; b=imBmwEE/bW1UwIXD/AomrWdxR40rNRPp0LgCwuYm82dRH1M2Xqbyol8pcab0dAK3vBZ/68QjifVZnAPyygwQO/bscElTQvukjh2Le2NdG2awO8gWuC2EO/volMtyFsXDOxc6zBSgqfVcVqvs0/9jGwxvxaZ9PQc0iAblaBIvI7I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773205531; c=relaxed/simple; bh=coU5kHsS6c6lbI8Sq0ussg4qrvGSTkUNyBRVxyk/T2E=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YN+xZw3/prc+eMDakQXZ4ssF8X1Pfe1m7cphfJVRdFmh1XiRWmhV1HIzrvEC4it4CKCQcRvF8A4WS/9whyZNN3dQGvECB+tv+jQUwvKOPVwrvNyz89Rwl21LGBfUrIUGy7ibdNRaCW34LgUCppxbg3uKmnNY8lwabAdsGTgX2EE= 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=IeDkOZQo; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BfHhDcnu; 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="IeDkOZQo"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BfHhDcnu" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62B3VKrR614148 for ; Wed, 11 Mar 2026 05:05:26 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= tThognzt4OinCCfq3jcBS1cFYl8QtrAxWZkVszdeexM=; b=IeDkOZQo6IO+CukM JyfS84flWUk8yk5iui7pvL20/I/g24FTTCDPnwKRADSI9Psm1PM25BBUSAFqybNc oaCssShESyfRrvcNbogYSagg7kKro41tuEwcoLlBwkT1GBWih69sXYefa2EL2ms2 08vpvOYgSiWky+fSVSAgUkFRxriKpjY1aD04l4DeAoSDaYWn68Eg/tmZkn8XWcm3 s+yBqCnGHFCgeMHoJdfXGoUBZg/rgZ8UPY+BipkKDPwQSK+iTjF8xVdONZqgmsxm vGxR7ulQR60kzjYCk9ab0qlpMXKT4AFkUYuB0pmZWNetQqsrtueRQWDuHhSrz10T UZIObA== Received: from mail-qk1-f200.google.com (mail-qk1-f200.google.com [209.85.222.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cu0jf087c-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 11 Mar 2026 05:05:25 +0000 (GMT) Received: by mail-qk1-f200.google.com with SMTP id af79cd13be357-8cd77e5e187so2213874885a.1 for ; Tue, 10 Mar 2026 22:05:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773205525; x=1773810325; 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=tThognzt4OinCCfq3jcBS1cFYl8QtrAxWZkVszdeexM=; b=BfHhDcnu6PFNoeSI+x5GK9X8Np4ABF7oBbpPG1uQtG+3NQ8Pa5O3PD2t8M87zvLDNT uL1mIiaBRJLLrRqiROW0PdKBw8lSkm/XGq1XdlYeVCdL5x46PPSgw5Kb6RI8SUb3liUs Q1JAhn+Iqd4cnZ4zlV0/JO0F+C79DVcQFWyAxor9/JpYwqJDxYhG8MN+LuWXcb6IlZ63 pI92kFh5Ic+atkCrpITEYz0jesCHMNURgrQf3DC7yuSMmg3Wt4Vy/9op56Qt6/KEY+zP CrX8ymhlQ+wdiwqQr9geUkik9R2r4LkGpvJ8PX8DhFBmAkukR8tcAcGWAPfstq7ulQRn livg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773205525; x=1773810325; 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=tThognzt4OinCCfq3jcBS1cFYl8QtrAxWZkVszdeexM=; b=m572SKcP8AyPGOpH8bwBCfVO0AZTISVfFl2iH5BmgSe3sjcvEaPfrFuiObcEdVk1H9 fBIisuBUGalfHIwnA7kulj5pJY6FfOg6EA2pi0Xn3u/7jzQSK5aAKQ2jQ1NN4d49gDeK 6uIzuUS7zyFMFdVFyEWkvGresRNdq8lmtu7oPlnVWZwhxmQmQapFldTq10FN1iL/K1aw voj/RYmTwqqP3tN/XKHBWnuRxVxgqVI2sjIcztM3hnNCHxg/6AusgbFnJS/DuL6RXbe6 IkoUdTcS51b23TtzcYaut06EIuHHVsG+pKJZ/v1M8hNiyvG+4Zy2tWYOK8bwXRydW+xL ZTlw== X-Forwarded-Encrypted: i=1; AJvYcCVP/35iaNEcfAON+1OX0vT39DwkQRrR67lNefvw5oN6cg5GGrkVxQWmlhXZWCyZVGGXOsHi9FG/C0xkOF4=@vger.kernel.org X-Gm-Message-State: AOJu0YxW/NMUcILZGZCAsso/G8cZLgVp7URzKwUR2PdrEsmpsjQfXU65 vzT0YUnPojj9zJPpsDFvqDiYHaShTGCi6Y8xkKWxqpOkeExg/oL9cKLiX7EfNpUcZDRXUVzlRyu UIXcPZa8nggUSvL6pN/bHjdH4t4Zw4wl5Bbnc57WuC2vSQhjJuufDLV6Tinx4PUPpNnA= X-Gm-Gg: ATEYQzy6qWjq200l4sTYU9RWXd7VILtw7ksyM0LU2wYkZBARkoYEdD6GGPwMGuUt4SZ jtbfYvixneWkbTFOAmBEJTzqkwXHuSUnOxmG0WgJNh4b74Ep2cvNAoWA60044z1RnErbyZyJocH JGwBLty3Fgtzk+Qcyr08GX8bNgrhjnGl5QOXIgW/u75pJGfpNSgsYCBRj0VYeqxWA69/r6QLsn3 8zqiyCSqHzTWjvZezVnjUfC1nUtohMSDc5Igcaag/ZGMS7uH8u36DLISv1zevMfsroc7SSCJx6E wHm15lCMPU/9Rj6PzJa6rWP3Ti0T6knhFLMLJmcM3qPAPZ+PFYEurlViYbi1kW/YpfOhZbf7i1c 9OTrZXrff5RN2DrWxOh0C1EyXMRmjKozeSvwkBcgU8uSYzlkS/P+eB7U8+YpEKmNPvfPRrs4mKX AYXqOWRFKxBYEyDmdKdJqN3TK4os2CtAhPZrI= X-Received: by 2002:a05:620a:254b:b0:8cd:9bf2:60e8 with SMTP id af79cd13be357-8cda1a55afemr167785785a.59.1773205524420; Tue, 10 Mar 2026 22:05:24 -0700 (PDT) X-Received: by 2002:a05:620a:254b:b0:8cd:9bf2:60e8 with SMTP id af79cd13be357-8cda1a55afemr167782685a.59.1773205523877; Tue, 10 Mar 2026 22:05:23 -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 2adb3069b0e04-5a15635805bsm199240e87.65.2026.03.10.22.05.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Mar 2026 22:05:22 -0700 (PDT) From: Dmitry Baryshkov Date: Wed, 11 Mar 2026 07:05:09 +0200 Subject: [PATCH v3 8/8] 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: <20260311-iris-platform-data-v3-8-f02258c4d4ed@oss.qualcomm.com> References: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> In-Reply-To: <20260311-iris-platform-data-v3-0-f02258c4d4ed@oss.qualcomm.com> To: Vikash Garodia , Dikshita Agarwal , Abhinav Kumar , Bryan O'Donoghue , Mauro Carvalho Chehab Cc: linux-media@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=openpgp-sha256; l=32132; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=coU5kHsS6c6lbI8Sq0ussg4qrvGSTkUNyBRVxyk/T2E=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpsPgBMPaYvoANLsQauBuKya/hOBBNwljvRRhZu o6lH989gAqJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabD4AQAKCRCLPIo+Aiko 1SIMB/4tXM2PHRQgLfdOjnsQ0hO8GNB+viA528CFdEtgScbvjQOw8HEWNyjvsFkOvPdEzII2A11 01MqU7SaLP5S6DO6KfsxSgnZMLR+EtmbL8S7ByhKOqFqm7z6x7DAKuw9kKo2uyizYWGg9WDM5Dl H4YD8CRAkzIcp0nY89Hcxpib7GZ+olALoil8ahZmUOLkiE/9aOTLuuCu8MTIV5w8tyKuSuCsumQ I/yHx9zs9WmM27lRKD/dXg/+581whrSxIjwynThG9PQ1ja/Grz3zTRIc8JyfXSa+2kM+r5DZB7H M3Npxpzg1fEOBl8KzzT7BJwmRRG/n1La1yRSUGiNPA/bWNyQ X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: vZGB3tCVawKBpI6EKoJ1FqT2ssPl4mrU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzExMDA0MCBTYWx0ZWRfX31yXNk+GilmQ iNL/ugdpiVuGOVFVRRSxpKerRPJtbvg3C7c8OGUIxTYAlomxkCaSv8duISJFybGRm2e0v1n7zBK leR3ZIjPWUiHIVdju8QWoZQiLdOeqPIh4y+ObuQ6ydHMAx7PqhwYN/wk0rxvFofXmVfMnBVD2NO qOOMXtPqcM68gPiJR/Ab1dluPS4WYPxA4Tj8VFMLCGg9S+j0WJvzrtMQC/mDYV64WgrdNxgtqTq TV40L2t0fUvg/Q6jLBkvMi+6YEUadp6KwhDZbKCvf00EboJ1M0GVVEM8+mi1obN1P1WD4lCIiaN khg60jvpRMyQ/wiVG1h/md7ajmUDA5BgRV/dA5dMGODfAqS66KkCfC5OzATYe43rgixPOhVr57Y BP9hh2Z6QiGUMfb/H6RO2H5NO7RnI0BryvbEQ7eXDrNAlj/mg9N36KXnz3Kfkb90gOgpTibBxaP qpH6yGXHq89c5KPEVtg== X-Authority-Analysis: v=2.4 cv=FMMWBuos c=1 sm=1 tr=0 ts=69b0f815 cx=c_pps a=hnmNkyzTK/kJ09Xio7VxxA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=Q_Tj2gVLSrreCV9GCYEA:9 a=QEXdDO2ut3YA:10 a=PEH46H7Ffwr30OY-TuGO:22 X-Proofpoint-ORIG-GUID: vZGB3tCVawKBpI6EKoJ1FqT2ssPl4mrU 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-10_05,2026-03-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 malwarescore=0 priorityscore=1501 bulkscore=0 adultscore=0 clxscore=1015 impostorscore=0 suspectscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603110040 Finalize the logical separation of the software and hardware interface descriptions by moving hardware properties to the files specific to the particular VPU version. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/Makefile | 6 +- .../iris/{iris_platform_gen1.c =3D> iris_hfi_gen1.c} | 133 ------------- .../iris/{iris_platform_gen2.c =3D> iris_hfi_gen2.c} | 218 ---------------= ------ .../platform/qcom/iris/iris_platform_common.h | 4 + .../platform/qcom/iris/iris_platform_sm8250.h | 29 +++ .../platform/qcom/iris/iris_platform_sm8550.h | 31 +++ .../media/platform/qcom/iris/iris_platform_vpu2.c | 124 ++++++++++++ .../media/platform/qcom/iris/iris_platform_vpu3.c | 210 +++++++++++++++++= +++ 8 files changed, 402 insertions(+), 353 deletions(-) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 2fde45f81727..67a12f42b3a6 100644 --- a/drivers/media/platform/qcom/iris/Makefile +++ b/drivers/media/platform/qcom/iris/Makefile @@ -4,14 +4,16 @@ qcom-iris-objs +=3D iris_buffer.o \ iris_ctrls.o \ iris_firmware.o \ iris_hfi_common.o \ + iris_hfi_gen1.o \ iris_hfi_gen1_command.o \ iris_hfi_gen1_response.o \ + iris_hfi_gen2.o \ iris_hfi_gen2_command.o \ iris_hfi_gen2_packet.o \ iris_hfi_gen2_response.o \ iris_hfi_queue.o \ - iris_platform_gen1.o \ - iris_platform_gen2.o \ + iris_platform_vpu2.o \ + iris_platform_vpu3.o \ iris_power.o \ iris_probe.o \ iris_resources.o \ diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen1.c similarity index 68% rename from drivers/media/platform/qcom/iris/iris_platform_gen1.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen1.c index 1d8e080b580f..a1e1b4a89894 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c @@ -3,38 +3,17 @@ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. */ =20 -#include "iris_core.h" #include "iris_ctrls.h" #include "iris_platform_common.h" -#include "iris_resources.h" #include "iris_hfi_gen1.h" #include "iris_hfi_gen1_defines.h" #include "iris_vpu_buffer.h" -#include "iris_vpu_common.h" -#include "iris_instance.h" - -#include "iris_platform_sc7280.h" =20 #define BITRATE_MIN 32000 #define BITRATE_MAX 160000000 #define BITRATE_PEAK_DEFAULT (BITRATE_DEFAULT * 2) #define BITRATE_STEP 100 =20 -static struct iris_fmt platform_fmts_sm8250_dec[] =3D { - [IRIS_FMT_H264] =3D { - .pixfmt =3D V4L2_PIX_FMT_H264, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_HEVC] =3D { - .pixfmt =3D V4L2_PIX_FMT_HEVC, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_VP9] =3D { - .pixfmt =3D V4L2_PIX_FMT_VP9, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, -}; - static struct platform_inst_fw_cap inst_fw_cap_sm8250_dec[] =3D { { .cap_id =3D PIPE, @@ -248,56 +227,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8250_enc[] =3D { }, }; =20 -static struct platform_inst_caps platform_inst_cap_sm8250 =3D { - .min_frame_width =3D 128, - .max_frame_width =3D 8192, - .min_frame_height =3D 128, - .max_frame_height =3D 8192, - .max_mbpf =3D 138240, - .mb_cycles_vsp =3D 25, - .mb_cycles_vpp =3D 200, - .max_frame_rate =3D MAXIMUM_FPS, - .max_operating_rate =3D MAXIMUM_FPS, -}; - -static const struct icc_info sm8250_icc_table[] =3D { - { "cpu-cfg", 1000, 1000 }, - { "video-mem", 1000, 15000000 }, -}; - -static const char * const sm8250_clk_reset_table[] =3D { "bus", "core" }; - -static const struct bw_info sm8250_bw_table_dec[] =3D { - { ((4096 * 2160) / 256) * 60, 2403000 }, - { ((4096 * 2160) / 256) * 30, 1224000 }, - { ((1920 * 1080) / 256) * 60, 812000 }, - { ((1920 * 1080) / 256) * 30, 416000 }, -}; - -static const char * const sm8250_pmdomain_table[] =3D { "venus", "vcodec0"= }; - -static const char * const sm8250_opp_pd_table[] =3D { "mx", "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, @@ -357,65 +286,3 @@ const struct iris_firmware_data iris_hfi_gen1_data =3D= { .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; - -const struct iris_platform_data sm8250_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .vpu_ops =3D &iris_vpu2_ops, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .clk_rst_tbl =3D sm8250_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8250_clk_reset_table), - .bw_tbl_dec =3D sm8250_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sm8250_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), - .clk_tbl =3D sm8250_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), - .opp_clk_tbl =3D sm8250_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu-1.0/venus.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sc7280_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .vpu_ops =3D &iris_vpu2_ops, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .bw_tbl_dec =3D sc7280_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sc7280_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), - .clk_tbl =3D sc7280_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), - .opp_clk_tbl =3D sc7280_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p1.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 1, - .no_aon =3D true, - .max_session_count =3D 16, - .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, - /* max spec for SC7280 is 4096x2176@60fps */ - .max_core_mbps =3D 4096 * 2176 / 256 * 60, -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen2.c similarity index 78% rename from drivers/media/platform/qcom/iris/iris_platform_gen2.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen2.c index 416aa80d611b..3b3cc6c1186b 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, @@ -1035,144 +958,3 @@ const struct iris_firmware_data iris_hfi_gen2_vpu33_= 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, - .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), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - vpu_ops to iris_vpu33_ops - * - clk_rst_tbl to sm8650_clk_reset_table - * - controller_rst_tbl to sm8650_controller_reset_table - * - fwname to "qcom/vpu/vpu33_p4.mbn" - */ -const struct iris_platform_data sm8650_data =3D { - .firmware_data =3D &iris_hfi_gen2_vpu33_data, - .vpu_ops =3D &iris_vpu33_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8650_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), - .controller_rst_tbl =3D sm8650_controller_reset_table, - .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu33_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sm8750_data =3D { - .firmware_data =3D &iris_hfi_gen2_vpu33_data, - .vpu_ops =3D &iris_vpu35_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8750_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8750_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu35_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - inst_caps to platform_inst_cap_qcs8300 - */ -const struct iris_platform_data qcs8300_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .vpu_ops =3D &iris_vpu3_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_qcs8300, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, - .num_vpp_pipe =3D 2, - .max_session_count =3D 16, - .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, - .max_core_mbps =3D (((3840 * 2176) / 256) * 120), -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 1a870fec4f31..5be028af5ec6 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -40,6 +40,10 @@ enum pipe_type { PIPE_4 =3D 4, }; =20 +extern const struct iris_firmware_data iris_hfi_gen1_data; +extern const struct iris_firmware_data iris_hfi_gen2_data; +extern const struct iris_firmware_data iris_hfi_gen2_vpu33_data; + extern const struct iris_platform_data qcs8300_data; extern const struct iris_platform_data sc7280_data; extern const struct iris_platform_data sm8250_data; diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8250.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8250.h new file mode 100644 index 000000000000..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..74c8f38e849b --- /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 platform_fmts_sm8250_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static struct platform_inst_caps platform_inst_cap_sm8250 =3D { + .min_frame_width =3D 128, + .max_frame_width =3D 8192, + .min_frame_height =3D 128, + .max_frame_height =3D 8192, + .max_mbpf =3D 138240, + .mb_cycles_vsp =3D 25, + .mb_cycles_vpp =3D 200, + .max_frame_rate =3D MAXIMUM_FPS, + .max_operating_rate =3D MAXIMUM_FPS, +}; + +static const struct icc_info sm8250_icc_table[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const char * const sm8250_clk_reset_table[] =3D { "bus", "core" }; + +static const char * const sm8250_pmdomain_table[] =3D { "venus", "vcodec0"= }; + +static const struct tz_cp_config tz_cp_config_sm8250[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +const struct iris_platform_data sc7280_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D sm8250_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), + .bw_tbl_dec =3D sc7280_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), + .pmdomain_tbl =3D sm8250_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), + .opp_pd_tbl =3D sc7280_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), + .clk_tbl =3D sc7280_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), + .opp_clk_tbl =3D sc7280_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu20_p1.mbn", + .inst_iris_fmts =3D platform_fmts_sm8250_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), + .inst_caps =3D &platform_inst_cap_sm8250, + .tz_cp_config_data =3D tz_cp_config_sm8250, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 1, + .no_aon =3D true, + .max_session_count =3D 16, + .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, + /* max spec for SC7280 is 4096x2176@60fps */ + .max_core_mbps =3D 4096 * 2176 / 256 * 60, +}; + +const struct iris_platform_data sm8250_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D sm8250_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), + .clk_rst_tbl =3D sm8250_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8250_clk_reset_table), + .bw_tbl_dec =3D sm8250_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), + .pmdomain_tbl =3D sm8250_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), + .opp_pd_tbl =3D sm8250_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), + .clk_tbl =3D sm8250_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), + .opp_clk_tbl =3D sm8250_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu-1.0/venus.mbn", + .inst_iris_fmts =3D platform_fmts_sm8250_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), + .inst_caps =3D &platform_inst_cap_sm8250, + .tz_cp_config_data =3D tz_cp_config_sm8250, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu3.c new file mode 100644 index 000000000000..2c0e5be72920 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3.c @@ -0,0 +1,210 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2025 Linaro Ltd + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_hfi_gen2.h" +#include "iris_hfi_gen2_defines.h" +#include "iris_platform_common.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" + +#include "iris_platform_qcs8300.h" +#include "iris_platform_sm8550.h" +#include "iris_platform_sm8650.h" +#include "iris_platform_sm8750.h" + +#define VIDEO_ARCH_LX 1 + +static struct iris_fmt platform_fmts_sm8550_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_AV1] =3D { + .pixfmt =3D V4L2_PIX_FMT_AV1, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static const struct icc_info sm8550_icc_table[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const struct bw_info sm8550_bw_table_dec[] =3D { + { ((4096 * 2160) / 256) * 60, 1608000 }, + { ((4096 * 2160) / 256) * 30, 826000 }, + { ((1920 * 1080) / 256) * 60, 567000 }, + { ((1920 * 1080) / 256) * 30, 294000 }, +}; + +static const char * const sm8550_pmdomain_table[] =3D { "venus", "vcodec0"= }; + +static const char * const sm8550_opp_pd_table[] =3D { "mxc", "mmcx" }; + +static const char * const sm8550_opp_clk_table[] =3D { + "vcodec0_core", + NULL, +}; + +static const struct tz_cp_config tz_cp_config_sm8550[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +/* + * Shares most of SM8550 data except: + * - inst_caps to platform_inst_cap_qcs8300 + */ +const struct iris_platform_data qcs8300_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_qcs8300, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 2, + .max_session_count =3D 16, + .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, + .max_core_mbps =3D (((3840 * 2176) / 256) * 120), +}; + +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +/* + * Shares most of SM8550 data except: + * - vpu_ops to iris_vpu33_ops + * - clk_rst_tbl to sm8650_clk_reset_table + * - controller_rst_tbl to sm8650_controller_reset_table + * - fwname to "qcom/vpu/vpu33_p4.mbn" + */ +const struct iris_platform_data sm8650_data =3D { + .firmware_data =3D &iris_hfi_gen2_vpu33_data, + .vpu_ops =3D &iris_vpu33_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8650_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), + .controller_rst_tbl =3D sm8650_controller_reset_table, + .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +const struct iris_platform_data sm8750_data =3D { + .firmware_data =3D &iris_hfi_gen2_vpu33_data, + .vpu_ops =3D &iris_vpu35_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8750_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8750_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .core_arch =3D VIDEO_ARCH_LX, + .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; --=20 2.47.3