From nobody Mon Apr 6 09:10:04 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 03FB42FD7BC for ; Fri, 20 Mar 2026 01:54:56 +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=1773971702; cv=none; b=aJGmL6HvEzDbOxMP/1+xYBJtBOr6cRWuuZ2G1dmxCrfAHaUXI/9NhMAJkW3i56AydpynE4RZ/l13z5BjqeE8GKOvL3s0TFQSPrtJ72mW7zxyxLu8Iwruj84923CEZWlg+QiNPxVZUG87XYtjVpx02zYoRkO21WYV0aj5wprldEE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971702; c=relaxed/simple; bh=R9G5DrWK7ZdreBHQ/NvwOHQkAkxN8nydMv+XrJUDCnI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=R7lxoS09UB6c8p8yIkGz1JSOQSg5izc28n0QQYvEEBQhxr499nOTX6SF9Aa0Mg7O3/uPRBgl+oTD7Eb6YqmUHQCgHfBSRlAIMkByVIJwL7JrZOqQ8HvWYRiTIFo6Kf709ANvd+EzF3akg8WqjuQ7GOiQcKg8BOljNUyGI/+OlD0= 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=H0H0lOJ8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MH3swVtd; 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="H0H0lOJ8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MH3swVtd" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JMkBEh4144607 for ; Fri, 20 Mar 2026 01:54:56 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=H0H0lOJ8LZBrcg2Z oqfHF1G7yYVkcxyh9FMZuHnFq0EjwwtzPv/lk8xEZQNk27L95teSv+oLWwgLay4A fvvaUFGjrbVtuFe2sPXW/O/OL5LFlg/AB64dRYpJniQZBwLy8jcJc1NH124TSWOl JxGUM0pRJoY208DJZVsrIMsLIGZzPKV0Cpkm3Ai8dOk4DOauPCQ+paBAiodEfjRb Sm2WCQqcsWz7xUS3KwX7l9wGwJjDX6IgAhx9G6ogsBE+TuPIfu67o5h+rps+fnLB mm1C4dbY9IsEn1R4C+h/ZXywQSP9hoQ6n2GHHg2sATIaXCpthbNMJ8VXadCyFRqj 2lvPvg== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0t7urc97-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:54:56 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-5091f12ed3bso11453881cf.3 for ; Thu, 19 Mar 2026 18:54:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971695; x=1774576495; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=MH3swVtdg9ACOcTFvZSgEAb3R5kYRK20tei8Lhs5Jbn//U5nB4b6QL68j3vkkezUKn VtwDgNId9NblCDJJRncy5+C4PDuU1Epg99I0EkmKk8q9qXE6JgaiyUzK6kcqRT9Oagiu FBN23tXo0mP40bhEb57fBfVLczwW2V+co4hKCk/wXIDrRfULpF+S1gALTlnAiKii8Ldl hOdTwL1lrqXQ1HRILkI8m0/4zHz3S7+Wbhz1w3RHeMB76gWuKYHgFU1rsT984Qhf2TPN wFxh80eQLZ66Cqefad58hiyKbzuxkOiFGMxCWytbzVghEI4X0DRhcLyqDv9sM3qZj2l6 uPzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971695; x=1774576495; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Yu4Ju/BNMWhFePsUEYj76VBRHr5svFe8Za8zkvDfGq4=; b=lK2XtqmrO042J3HsSZCqOgxMGC3YmS53t/1J816ED1S7x9Lvr2NC4D1bfRtPhRDuJN ivZTaf7sF4LAXfO/p0fN5wVIIngCNra3waf4h1rEyEyh2wHWNQlY6oiGohRyY+80vfTj r/b+/WnsYAcGKthJAxjKbyBWTVmtvE4Y7EWcHqnGfuWk948UJjV1WKZV2OTcqpakY6MH aEDIb4KXDy2mpuVbDLH6FAYSTC7kS+x9DN0Pv8bbc3dJ32sfMC8qsopQUxbLcgE/1QdJ DJHFLHiMCtXRB3Dqye0PcebI8jHUybwGQPJUKD0DzSJ1YbJbFnY/6jevwne8O3ARVEcg RBNA== X-Forwarded-Encrypted: i=1; AJvYcCWvV4q5D5NTonG0/dkdGVb4+R6TUBkxJCq0qB99xqwRTHFbH05t//pfOyNuRkKRvaOJjZT4Dn9hqkIxbfQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwRuLAPwtCyUv2kT2T4P5P5n5lMA7g/X3U3BVw/eeDMQfL4rIU1 ADfn6myTLfgaAwEr130vEdtfELcYHcHndxRisWJetq6kn0F0IMDKMcqSvh67Bl1JpGaQeYjqmql migojdVn3J1fmXYSK1YP+Y86P2R2e4q/4hbAU8GbTv9KE5BlO0EYuk3dEIN2K6dTrjXE= X-Gm-Gg: ATEYQzxipb7en6f3C3SGKotgTCGcf6a0yiU/QMrne59ubjuUqfCNlAkNWHjsZZKjb75 BpfMQ+8BqsOwbeH0SsX2anEgEZz+nt/+IwQkXN9h27JbWkEwYiT6MIJEIbsRN3alV9bLjjRHNHX s5pKLqAKYUgci1K4zwFgFzqAUcGxbLROjNYx4y5WCNQihdPNZ7VWK7aaqazA7rMXUljTFSNBUKK iHrdYnvnObB4YKAP2Z+m+n3eJjd24uVyTYjMAhFmpmblO9EG4WQqGytmrtfnBXsetgUREzFi3+3 1Stjp4PFM14DKyK9hi6+p1VGrzv9WIkn0uxhqOws+3WCGS2F0ZwNcyAJKc3H24NFqQ3RDJ1kc9g z6c8H7Lk7q+l9eJ8OWnd0oRfVd1j09hlicxpAZoAtlfca4fYvTjAneDw9Jpucrx0RU0BNAUkJm8 X3af3XKeLLSfmtziPy328S2XsYxDM683cvn4Q= X-Received: by 2002:a05:622a:1b28:b0:509:20de:4acc with SMTP id d75a77b69052e-50b3753f7e5mr20695161cf.47.1773971694880; Thu, 19 Mar 2026 18:54:54 -0700 (PDT) X-Received: by 2002:a05:622a:1b28:b0:509:20de:4acc with SMTP id d75a77b69052e-50b3753f7e5mr20694881cf.47.1773971694286; Thu, 19 Mar 2026 18:54:54 -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-5a285305eefsm232344e87.70.2026.03.19.18.54.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:54:52 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:41 +0200 Subject: [PATCH v9 01/11] media: qcom: iris: drop pas_id from the iris_platform_data struct Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-1-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=6224; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=R9G5DrWK7ZdreBHQ/NvwOHQkAkxN8nydMv+XrJUDCnI=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjkAsbxPGbFF5oyEt/EhISI27We56rjYzWCN q79SvGI4w2JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5AAKCRCLPIo+Aiko 1a4IB/wLZo1cEX9xuwgfkg11keF9bpNDNrmy33+EVeQwnsNS1kAMZ83a6MJIy0cmHJ7sso/63CR lzQddruj3oRXL0OBvh3ok8CgAgyBLbUhIiOoXAStz7RgJjX1+RmbSVr2K2Bj7/k6oYcP4gTQocS 7Qu/eMA8V8PV5bhlkaS3N3eSYYFmVbcEt/8P3U3npzV5WNwf1IU3oFdZevBNx/e7gUMRugdvbSS cnqXdf/y01I1CZw7+gmkytpslC//WHhyZut9ceCecME+xWopjGu/ylaAhimaciGMxJrZJ2VXYGb 91/ZoUsrpGdbMLajkBqo93XGiQ2fX4tqUZ2H8jYKtQ6W4uQq X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX015pCEFzljw/ kMMEJlap2ohjOymJ3MNmfH3A25bpdGNzSlscvjzlC55AiNgXiKhoZo/1MZITEC0Aduv/NwjeJEw L+K3lGEm2IIf82Umc03t5i48xtZC67J8axb3Kx0YpYonPQmoBL9zyIzbFcWxiBwZpJWUkSifIK0 apB5XCuAqPdFcCVI7kx6Pg7WhS+KHXqAgj7lIWYNIhm0beVwNM16mjnjmoqCjmPDA79dq9N1SQT uhBvPjsHUjRQMWZOLumqtj0vQujsg9FiIuSzMFMOrzXap9pqLyhM2UnNx003X6s+DcOlGm+v1Z9 SZpS4TayGB6daF1ErDXy7Ny3RrxOUNB5qKbIvl9GOq5fxW3xB9ndV4QTHT39+ZaNHDQwzTXcJi8 cFtiNTkcg3+Up+pMgqjW9Yopw4gvtHMGj4hGCaOIko4i95TivUrPjh1kcIjmNzue8nDmiDbcR/K X7nqg54oPSGCJfT3oeA== X-Proofpoint-ORIG-GUID: jqfaX-Q4JaLibP_Lsts7WFjWJfTWKUCm X-Proofpoint-GUID: jqfaX-Q4JaLibP_Lsts7WFjWJfTWKUCm X-Authority-Analysis: v=2.4 cv=c/OmgB9l c=1 sm=1 tr=0 ts=69bca8f0 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=hYMYe-gnznq9qBW6PAEA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X: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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 The PAS ID, the authentication service ID, used by the Iris is a constant and it is not expected to change anytime. Drop it from the platform data and use the constant instead. Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_firmware.c | 11 ++++++----- drivers/media/platform/qcom/iris/iris_platform_common.h | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen1.c | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 4 ---- 4 files changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_firmware.c b/drivers/med= ia/platform/qcom/iris/iris_firmware.c index 5f408024e967..bc6c5c3e00c3 100644 --- a/drivers/media/platform/qcom/iris/iris_firmware.c +++ b/drivers/media/platform/qcom/iris/iris_firmware.c @@ -12,11 +12,12 @@ #include "iris_core.h" #include "iris_firmware.h" =20 +#define IRIS_PAS_ID 9 + #define MAX_FIRMWARE_NAME_SIZE 128 =20 static int iris_load_fw_to_memory(struct iris_core *core, const char *fw_n= ame) { - u32 pas_id =3D core->iris_platform_data->pas_id; const struct firmware *firmware =3D NULL; struct device *dev =3D core->dev; struct resource res; @@ -53,7 +54,7 @@ static int iris_load_fw_to_memory(struct iris_core *core,= const char *fw_name) } =20 ret =3D qcom_mdt_load(dev, firmware, fw_name, - pas_id, mem_virt, mem_phys, res_size, NULL); + IRIS_PAS_ID, mem_virt, mem_phys, res_size, NULL); =20 memunmap(mem_virt); err_release_fw: @@ -79,7 +80,7 @@ int iris_fw_load(struct iris_core *core) return -ENOMEM; } =20 - ret =3D qcom_scm_pas_auth_and_reset(core->iris_platform_data->pas_id); + ret =3D qcom_scm_pas_auth_and_reset(IRIS_PAS_ID); if (ret) { dev_err(core->dev, "auth and reset failed: %d\n", ret); return ret; @@ -93,7 +94,7 @@ int iris_fw_load(struct iris_core *core) cp_config->cp_nonpixel_size); if (ret) { dev_err(core->dev, "qcom_scm_mem_protect_video_var failed: %d\n", ret); - qcom_scm_pas_shutdown(core->iris_platform_data->pas_id); + qcom_scm_pas_shutdown(IRIS_PAS_ID); return ret; } } @@ -103,7 +104,7 @@ int iris_fw_load(struct iris_core *core) =20 int iris_fw_unload(struct iris_core *core) { - return qcom_scm_pas_shutdown(core->iris_platform_data->pas_id); + return qcom_scm_pas_shutdown(IRIS_PAS_ID); } =20 int iris_set_hw_state(struct iris_core *core, bool resume) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index f42e1798747c..e4eefc646c7f 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -12,7 +12,6 @@ struct iris_core; struct iris_inst; =20 -#define IRIS_PAS_ID 9 #define HW_RESPONSE_TIMEOUT_VALUE (1000) /* milliseconds */ #define AUTOSUSPEND_DELAY_VALUE (HW_RESPONSE_TIMEOUT_VALUE + 500) /* mil= liseconds */ =20 @@ -226,7 +225,6 @@ struct iris_platform_data { unsigned int controller_rst_tbl_size; u64 dma_mask; const char *fwname; - u32 pas_id; struct iris_fmt *inst_iris_fmts; u32 inst_iris_fmts_size; struct platform_inst_caps *inst_caps; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index aa71f7f53ee3..07ed572e895b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -360,7 +360,6 @@ const struct iris_platform_data sm8250_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu-1.0/venus.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, @@ -413,7 +412,6 @@ const struct iris_platform_data sc7280_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu20_p1.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index a526b50a1cd3..1f23ddb972f0 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -934,7 +934,6 @@ const struct iris_platform_data sm8550_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu30_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1038,7 +1037,6 @@ const struct iris_platform_data sm8650_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu33_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1133,7 +1131,6 @@ const struct iris_platform_data sm8750_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu35_p4.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -1232,7 +1229,6 @@ const struct iris_platform_data qcs8300_data =3D { /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", - .pas_id =3D IRIS_PAS_ID, .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_qcs8300, --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 38D482F5474 for ; Fri, 20 Mar 2026 01:55:00 +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=1773971707; cv=none; b=uOv5Gwbqf95aWx+UqYTDI/s+lPdoI6UhYQ7etDTCnf75IZchNcD2Q+tJPghWib8Um6mmazGVWCtjVFJmRjcHw6og9MIveZJJcTzJAc2q8xfKEeQXikXU07C/rCcwUSvtCTOgaBzmZ/nwAk74BmHEEIkQdpeAAYpIe3Kek+soF+0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971707; c=relaxed/simple; bh=UnGlccQOyrgjPF037WTnCf6++MPZK2sCDOcuFmLrNnQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=T7Yw5hyNhG4lOQ8WvlsnUJDOD6M0e6pnscuOJN8emFSgMeO8LC3mxXcWN5NpJPNlPihQua8v8UltMd5v9voxocVBYFL6qQ2nmUTrA2lh3bdi8MLgVKzzxf6aPwIzXtHndlXr5blDr7DiThnYIA22Ravx190bb79JkB/N23PQ8hE= 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=c4fo6084; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bQVD8gtg; 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="c4fo6084"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bQVD8gtg" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JM4KTb4171037 for ; Fri, 20 Mar 2026 01:55:00 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=c4fo6084NTpflE// exqR8OP+yDSMjYA/Uo1yo2Lpu/Arx4b0kat29CZVcU99wT1t61yzI4IlX9AuW/GG tsgaLjpfEU0o1RMq1CdzBCwqB0rsxyFMj5rXbsZnPdjVgDsYArzBHBBgbCqQYueE WBC0aLda7lQirgL/0Bnu4tFHzbkx33fZs0XE8TOXLN6lt2eQAaUjS5ZjOl3CvW1P oTBO3YDGdrur4grC2Hs39YCZWwVmg2geLoru/5oX8davV3kr6rhL0jGWKH+Egs5T UJeAAi63COM8QmQqjl9Rflufu9ufwo7aNaARLZhFL4/dwwiz7qeOopyHB5w44n0f 5uqH9Q== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0sm6gfyh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:00 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b380cd5e3so25709661cf.2 for ; Thu, 19 Mar 2026 18:54:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971699; x=1774576499; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=bQVD8gtggvb3c1fh+nOmLOsJlyaS9HcQp0Liuhr0MGl4NUX+CfkW3N39uf2JZSTpKx wzDC9rkEcp5fX/tvCbX/Bg/m1Y3jGZF8VUXgQ73DlWzjT6qb0NGqoEdYkqXn2MbhGNVV MeX82j3/AwGygOksJFwcOuweUnTK6LM2Plgsn5FcH/wLiD5LNuhaSPeL+JgSz9aGHVnx Whj+nyJRo5PdNZgfr0A/NcNg8qB1eBYftJup8mpupt0J7Ll1M+20iSKVEHen/Me8mHOk VG1KXtWExN6WcBqyzbE9KTbHfPy5qyBTbgY+oY8NgMKZlgSqxEfgGqy7Luor6lXMfvGP t8CA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971699; x=1774576499; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=kKS7pL3yVGjvqx3jYCkzYbYDA12Tn9fOt01/J1qqmf4=; b=dwbzOmyHRN8aKp//lHQ6Nvv4TRmKZ6+f8Fy2GGwpoRSuinuaSYBZJNaiMFPrgxZre5 u3CTPpEPTamA2qXZ0gzN5VmYIQBj5D240g9se0zFLq4P588HscyowvPRGb80+z0hHvyG rXOOaVFNP1qj6ngzXTrATuzuMasEckbLUY7b8U0g4/U7Y+fill7u4UfNu2AM0AiOl8y2 7HI5mv46RMk71VTfdvKTfhYWaOKpCm5MO4HEPF0XefbVRC8NTHormRUhhfAU7jbPCkkM 3hBJKD48hzm/6nIcynhoA4H8Cb+a75zkuWh8AamlL/sL7UoQIm4ZyUhA+eJXA5XPOXMv sRMg== X-Forwarded-Encrypted: i=1; AJvYcCVy/zPTug76dvfA2seficn//vQ49ACczXNfOSUXS0/LiZx2TipHhPVLXSLI5fMi88Qf0MmZwVFlaoqXnHQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyHM2MVfXNMw3BGINN5Y9mWVO2kondoD2RIRr60wRMNMBvcd1wi g2+ruJAAAOrYj6PwE5u++9PkWoU+UWGQPahGAc9y8hglfKmRkct1FrCIr4oLSEkOuLyp+D8zNmm Xkf7cc0BVhU/NM9RmH4eTP2UhuO84/7bCB6XqjlHd0OC7ROLliE9AaCttMCEGg/Mm3XE= X-Gm-Gg: ATEYQzwjMUKZSTm/UokmEStsmStbpPRms4nWTIGBKauDBznn9Ioxu9elTUTLiBeS5l2 HUeg6KYd8RDLFYwzJxyJtYGpMgdpGb65ysl4hr2QJf4MkkqxrIe0y96Tah7M1YETwwgod8RPDG0 47D3N6jPIuWzsI537CIZiMG5NIZgmZo2P15C8qOOArps4mEpCMRP8c4nCeLy+5XKIVa6slrJam4 NgUg8fyPrVzTLYVuYDg6eAoMM3CE3hXhB/U+XAL7KIWCa997SxiM7ZPIRp8h2qnsoa+cKmj9FyO 3iba+jagw0X5GEGclLo7NTLVtMNxjysH4H+kAxd/vdac8PrvkBArqdan0bCkhiZM9G4MkiN6me2 Q/cqyMC0FCYvbc/MGR4wyGu0s3Yj3MPzPp7SLvK+6gzjr+GV+gIxJAyrnPj4KvG7kf4Crf3EqW7 cbY3ieI2MrfyhSpg28KqdAJ1gmNmz90ywIESk= X-Received: by 2002:a05:622a:4c0b:b0:509:2d05:6979 with SMTP id d75a77b69052e-50b3748dfabmr20509661cf.26.1773971698907; Thu, 19 Mar 2026 18:54:58 -0700 (PDT) X-Received: by 2002:a05:622a:4c0b:b0:509:2d05:6979 with SMTP id d75a77b69052e-50b3748dfabmr20509531cf.26.1773971698362; Thu, 19 Mar 2026 18:54:58 -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-5a285305eefsm232344e87.70.2026.03.19.18.54.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:54:56 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:42 +0200 Subject: [PATCH v9 02/11] media: qcom: iris: use common set_preset_registers function Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-2-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=6562; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=UnGlccQOyrgjPF037WTnCf6++MPZK2sCDOcuFmLrNnQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjkWbqlQl57YEkRgQjbQwNrm6Z2gWhzLezkL +NwjCtm25OJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5AAKCRCLPIo+Aiko 1agwCACi4ISfO8OFcoY8reJeF/UmpANp5unPJ8AWiVnOqUVVQd+SF1tcWuUQq8i7Og3mIUf7199 2EfXL2XRP2FrR+cXQYSdZhvVelC8AhSHvGe07csMlik38FjPaYRfdN0fYR6Dxb6iKM0ljbGHmMk PPRtrmgFJhPAW7EE+YF9PqIOBqdbmCGMU6aCzOy8sdtwPwSzjdoPbNQy8iTsPkRm3yom1KIFeZp Zdfhy1HtIOxnWpvN5Pgkth2IQxK1HUgmCB0zzEchVxAl3CHG2GrjzO+Gp7Qhk0+B6KxUANXRKLa Ucr6iwHZ5ss1upmUrHaNgCrgzqV7lGGIaQ8irkUcc9MFCbCe X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: C2SPeN6Ak1fGA7tDfcD0EDFtFJ9uB-vX X-Authority-Analysis: v=2.4 cv=Rv/I7SmK c=1 sm=1 tr=0 ts=69bca8f4 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=LmgrmXmU8fDMlo1BKrQA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX8iA0E4rQ41hP 4NUjEBl9GOeh8yfYpvaEZOCo9vbpTgD6x9XnfyIyabAUiSDIvcT0qk+DMeLxgFD/IA60IFSLDmJ x70JzKtbaOJ+NT3GMM0KljcX55hQqHLwfcWteQrn2aHp45EV1atRGJs4tjzuZP1RplP32KMTchz DDV069x4Wg6kyf36o/gyEsPbbY+nT8CxnveAsjSl1sPCLHt3x4XGjO4+lo2Pu9X2x9L8ciWdPst XyEwVA21dHy4CzMrHNbzZoRKfNMtbUMDb5Kvo/8smrTU6pbtnCPmMU75wi3qKOjnatDOpK5vVXM NEZu5btBJtLM7u0PyF5WiFfdCEJae8wWaqJ/H4ZOrN2CzKOcesrfRbJ/uiCZNk7H3MzCmPW/uhm EcEZajBfWq/JCoKvNydoJCBstsbMa4V1Bs4pEl1zW0QIb6fCJrLNqLjvLGE2pWe17uBZjFMbQbm AxJzRwVKFtT5wX9J1xw== X-Proofpoint-ORIG-GUID: C2SPeN6Ak1fGA7tDfcD0EDFtFJ9uB-vX 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 The set_preset_registers is (currently) common to all supported devices. Extract it to a iris_vpu_common.c and call it directly from iris_vpu_power_on(). Later, if any of the devices requires special handling, it can be sorted out separately. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_platform_common.h | 1 - drivers/media/platform/qcom/iris/iris_platform_gen1.c | 7 ------- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 9 --------- drivers/media/platform/qcom/iris/iris_vpu_common.c | 7 ++++++- drivers/media/platform/qcom/iris/iris_vpu_common.h | 2 ++ 5 files changed, 8 insertions(+), 18 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index e4eefc646c7f..d7106902698c 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -207,7 +207,6 @@ struct iris_platform_data { struct iris_inst *(*get_instance)(void); u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); const struct vpu_ops *vpu_ops; - void (*set_preset_registers)(struct iris_core *core); const struct icc_info *icc_tbl; unsigned int icc_tbl_size; const struct bw_info *bw_tbl_dec; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 07ed572e895b..ed07d1b00e43 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -260,11 +260,6 @@ static struct platform_inst_caps platform_inst_cap_sm8= 250 =3D { .max_operating_rate =3D MAXIMUM_FPS, }; =20 -static void iris_set_sm8250_preset_registers(struct iris_core *core) -{ - writel(0x0, core->reg_base + 0xB0088); -} - static const struct icc_info sm8250_icc_table[] =3D { { "cpu-cfg", 1000, 1000 }, { "video-mem", 1000, 15000000 }, @@ -343,7 +338,6 @@ const struct iris_platform_data sm8250_data =3D { .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_set_sm8250_preset_registers, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), .clk_rst_tbl =3D sm8250_clk_reset_table, @@ -397,7 +391,6 @@ const struct iris_platform_data sc7280_data =3D { .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, - .set_preset_registers =3D iris_set_sm8250_preset_registers, .icc_tbl =3D sm8250_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), .bw_tbl_dec =3D sc7280_bw_table_dec, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 1f23ddb972f0..c84d4399f84d 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -756,11 +756,6 @@ static struct platform_inst_caps platform_inst_cap_sm8= 550 =3D { .max_operating_rate =3D MAXIMUM_FPS, }; =20 -static void iris_set_sm8550_preset_registers(struct iris_core *core) -{ - writel(0x0, core->reg_base + 0xB0088); -} - static const struct icc_info sm8550_icc_table[] =3D { { "cpu-cfg", 1000, 1000 }, { "video-mem", 1000, 15000000 }, @@ -917,7 +912,6 @@ const struct iris_platform_data sm8550_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8550_clk_reset_table, @@ -1018,7 +1012,6 @@ const struct iris_platform_data sm8650_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8650_clk_reset_table, @@ -1114,7 +1107,6 @@ const struct iris_platform_data sm8750_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8750_clk_reset_table, @@ -1212,7 +1204,6 @@ const struct iris_platform_data qcs8300_data =3D { .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, - .set_preset_registers =3D iris_set_sm8550_preset_registers, .icc_tbl =3D sm8550_icc_table, .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), .clk_rst_tbl =3D sm8550_clk_reset_table, diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index 548e5f1727fd..faabf53126f3 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -468,7 +468,7 @@ int iris_vpu_power_on(struct iris_core *core) =20 iris_opp_set_rate(core->dev, freq); =20 - core->iris_platform_data->set_preset_registers(core); + iris_vpu_set_preset_registers(core); =20 iris_vpu_interrupt_init(core); core->intr_status =3D 0; @@ -485,3 +485,8 @@ int iris_vpu_power_on(struct iris_core *core) =20 return ret; } + +void iris_vpu_set_preset_registers(struct iris_core *core) +{ + writel(0x0, core->reg_base + 0xb0088); +} diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.h b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.h index f6dffc613b82..07728c4c72b6 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.h +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.h @@ -39,4 +39,6 @@ int iris_vpu35_vpu4x_power_on_controller(struct iris_core= *core); void iris_vpu35_vpu4x_program_bootup_registers(struct iris_core *core); u64 iris_vpu3x_vpu4x_calculate_frequency(struct iris_inst *inst, size_t da= ta_size); =20 +void iris_vpu_set_preset_registers(struct iris_core *core); + #endif --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 85FEE31D726 for ; Fri, 20 Mar 2026 01:55:03 +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=1773971708; cv=none; b=MxCtadlskszhWYMz+NePoGRHC+ZOfH5yPGmXLdNeEO11ftpqz66TkDWI4kpKVjhc7LegzhtAs1HxnezXpxJjMyaPwEZ8UXuSDmG/Z3+6EnkH5nZO0mOr1lWEx05kwXpvYmqzRuLzLwBE3LySn3N3rstLgdM0v6cndRAp2ame6ZM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971708; c=relaxed/simple; bh=xFJdeT3yOlq/oRgFq0BzLBs7EsRlJjjKB4aOCgE5Kn8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=RVxNluvk7qbpbreg08AZ69En95CslwOr6rm9DPYldVHooB1CgwFmeEfHQeMpajbM3O7THodJyCwiUbfBu3efDfKeltl0dwYdoWVZfmFmoEm/gCkowHtKsukd9yIELLjwHSQSq6P57Hu9LigFbzf/2LrhQVetbBX57Nb3ILNnm2A= 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=XVYNpLTn; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ex8619tc; 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="XVYNpLTn"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ex8619tc" 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 62JJdCrj2759212 for ; Fri, 20 Mar 2026 01:55:03 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=XVYNpLTnYn6mMFaS fqYBeshBqApe+jSKplY5FKKnlVD0g3m+L1wi1P/dats9tMZOQ4f4RJufHz2DNLCe 7piv4OIx9wluUF/SOQW/U3fgz/DEoXcUVxOYfRPLxhkGeyngxY0YtIZenA/3CwtG c3GKPjaRUg2JwfheHEzq3Rj1oW/YjN4Hr7GganCd4pMtv9cfSK7SJcmW5+OUEp8C a87U6txMevzoeiYT7HGzGE/LyS/W4nItQq3B3yPQeRrZvpvAJ5AiSv0qcPOZqZoT Cb7La/iSU4iF7bXgJThKNryCOP6N6cgbRLf909HPYamLsxnxFV5vgmIt6dw/WQb1 A8XqdA== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0qg78tk4-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:02 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50937cf66b5so26302771cf.3 for ; Thu, 19 Mar 2026 18:55:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971702; x=1774576502; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=ex8619tc/M0yW96Lb79BWQOdXU+PsktW4z1MBVdjHRBqL5XgLBCTvmb3WWp8fSEZxL b277MZkGsXuu/Ntlg/EODtokKtWFsNu7L9EArYucdle6ro+YatVaDAv1I9OVKXM/VmpI a0agfpW1vX3objOb3rVbOKn3mWTIkaPTOrlIo23DNu7CAxFkxetzIbGvOhihgXqDtxyJ K6EhLwx+eNNOqukstYeCKSHOcaUj5tu5ZmZzFMn6sCUmKfSI8nebyMg86a0oa08P698o 4pdXP0ELSdpzbcnrt/Z8bSGmaKLvCI2BXLnjgRRw+6EHx5LkeSTvTK2xscdU6NTBl7dl BGQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971702; x=1774576502; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=kiX3oiS3V2FER92MkVmW6VCS+AmFEidamWAh+fCmPtk=; b=YTelduvR6eqtCzfZZ22soOVbFVMMjJyZ7X8z+HFw1SIuoJwX6OOmYsR3GNLkDqjr4q c1da0hzqX4RPu75/tsuOqXbImEHW2B7+GUa1i67l+LSbVWv+a4fHHApBIvKHn6yArGVq 749Yc2hOG6s/6yutPcuW9zaBkK6kwQ9OJpP3OSYGxS7cThz8o3pDPU/rsXyr0J3q4DyD Xe02aDc2YplYKAkHfcgjBIrvjQMmR70FE3ol4MpaJHh3kMTCfvMDDdouI2oEUdSAK+UP DFoUY6Vjf2FhtVj1VaeNkxGjfc6gdgJM3FwJt4Egf/K0/xe35/HPbV7HuJVXR7AfEG4N n5yQ== X-Forwarded-Encrypted: i=1; AJvYcCWqnE0m+SW9tvgaZWgsr6Th6g3C3yduh8wV2ubga0SMdlaktw3ZTWjucRNNAKnbA9zw9EvO3++iWugj29A=@vger.kernel.org X-Gm-Message-State: AOJu0YyeFG93DloCSpZN9bQzsM8/zWmCpzWg4/ZW9Lks946kVwgHdhbS YnF4ninMW5dzUNskhmedEonYIGo5DNkvKhUiDkmnkGTO/7Vt8osyD4encZieL4C8t3lAryrz4M2 j9VvY7WgFKGg7dN0j4k6sRF+R+iaa+9dDyS+ifYl4/6BWuXcKl9PWLgxL7kwZMbMJlls= X-Gm-Gg: ATEYQzzGoONCBJfvR7evp9z/SmrfSrNI43HStHeSil6K45z71mn9O/UqdwAwf4x2NcV Rqtu8RJ2JkOKj3gQKbzkjmdXkiXNi2KWbraFB35BaChAW1kUnXWtg+waDLVY4CfZOwfLgc1jnfY lOycofPTQH4QgWvJa6i7Oa3EIan1mUsGnpwRxXCXMocCvWSQvJAaFdywOJeYBvdjk5EKiqcnxV4 4jWoAslgd2cEfrFWNLFoG881P2jAI6CSETeRpiU9Q3hM05k7vRIKcdiw0b/PvNLPz+i/5AWQ0mc mEqO4v1w3SSEf7qtt7UgLRraXGQYdTOulZ35a7lXletiUS7UAjRCtP5y1JO4Io04HbGPvPrWIYB 7G880eKtbcA0XcvfOHWbHO8359WhBKulWGziVnFh6BEGxrhoBM65k4nqi1q/iRtOjSg8Kp0+Nlh bb3BvpLEtJeQJHTJu0/Xh31OfXOTyBuvp84Zo= X-Received: by 2002:a05:622a:5c95:b0:509:16a1:2033 with SMTP id d75a77b69052e-50b37426b4cmr23364031cf.26.1773971701575; Thu, 19 Mar 2026 18:55:01 -0700 (PDT) X-Received: by 2002:a05:622a:5c95:b0:509:16a1:2033 with SMTP id d75a77b69052e-50b37426b4cmr23363871cf.26.1773971701109; Thu, 19 Mar 2026 18:55:01 -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-5a285305eefsm232344e87.70.2026.03.19.18.54.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:00 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:43 +0200 Subject: [PATCH v9 03/11] media: qcom: iris: don't use function indirection in gen2-specific code Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-3-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=2232; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=xFJdeT3yOlq/oRgFq0BzLBs7EsRlJjjKB4aOCgE5Kn8=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjlNpgE/23wOC2LDjN6Gx8/lKavoOhB8zklz f9ig8Lu4hqJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5QAKCRCLPIo+Aiko 1TbVB/9YbXJ9TJ/L8sPPEoXp/+Ws3KAe1VZ/efKMi1iDZowDdLlJHkOQ4MiAVNBBtn/l7F90QGv JnV5asAySAz/hOXianXZSTmG986fOZumntU1eOkLsM8Og0ayNC7fllCJ+R2A+/iK0x6xbYuImL6 09lpu0Si7GM5+jeRzUb1XhJPWRf/c4x/BfQcCyraVF26wlFT7ly/dZpXdIjYbeI1ean+JTtPH0r yGKUUYTl8jWQ96wzxCewRNWIiOUvTGWtXBm5ZG1uZTssd6fLr9IItU0qhNOaRlFkveCHNUgWwUX x3jm9L0K4r7PL11+EO2ZbEvnxqiVsG049vI86vEOQ9vctRvR X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: RH4WEY38cY8HO2q2RBzt3gVaWcOgqoZB X-Proofpoint-GUID: RH4WEY38cY8HO2q2RBzt3gVaWcOgqoZB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX2kJTciDTjI0D fR0PcPuhVe9utGO6USilrxswub9B6jUboJm74/6ap6569t2YbeHXFXbIWcBeTAPh1uPLUce0EK9 OOtMsnfMrfPifL1DoRiG/60h+waUlbSWjWkQSOcYnZC4sYSibT4MxES5W1a/LdZ/t5+D4EZjI8e VFxjq/+nLKb+bHWZcs68n+gELi6/SUfVTxLNKiLyotaQMZpYmT+4bZXZ4XTylHsBz23CKzETu+n YQuSNhzS+C2bQOGOk62VX9+APQjXYer6BcwrySsKBuCr9gtslH3p7ziFnJiHYT64AgyUpEfbycS uywKs+VG0YqY4dywZzNM6y2R8mB7Oh4ib4Fe5aXMmEoApOqzwGezeWIr82Fs4HbuhA9c0h4jPix FpzDl4rvy9/Dx29R60nWEFwWHtwp8Dd3PV6RIfV8V1BxFGDHRZTxTCtHPj0JbYeqRIWW9eKrYcB ZQfLJBB95/Rb8XTP7KQ== X-Authority-Analysis: v=2.4 cv=fdGgCkQF c=1 sm=1 tr=0 ts=69bca8f6 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=yEfzmaBkz_6XQGMMuZMA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X: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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 To note that iris_set_num_comv() is gen2-internal, rename it to iris_hfi_gen2_set_num_comv() and then stop using hfi_ops indirection to set session property (like other functions in this file do). Reviewed-by: Dikshita Agarwal Reviewed-by: Konrad Dybcio Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 16 ++++++++----= ---- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 30bfd90d423b..e4f25b7f5d04 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1205,7 +1205,7 @@ static u32 iris_hfi_gen2_buf_type_from_driver(u32 dom= ain, enum iris_buffer_type } } =20 -static int iris_set_num_comv(struct iris_inst *inst) +static int iris_hfi_gen2_set_num_comv(struct iris_inst *inst) { struct platform_inst_caps *caps; struct iris_core *core =3D inst->core; @@ -1220,12 +1220,12 @@ static int iris_set_num_comv(struct iris_inst *inst) num_comv =3D (inst->codec =3D=3D V4L2_PIX_FMT_AV1) ? NUM_COMV_AV1 : caps->num_comv; =20 - return core->hfi_ops->session_set_property(inst, - HFI_PROP_COMV_BUFFER_COUNT, - HFI_HOST_FLAGS_NONE, - HFI_PORT_BITSTREAM, - HFI_PAYLOAD_U32, - &num_comv, sizeof(u32)); + return iris_hfi_gen2_session_set_property(inst, + HFI_PROP_COMV_BUFFER_COUNT, + HFI_HOST_FLAGS_NONE, + HFI_PORT_BITSTREAM, + HFI_PAYLOAD_U32, + &num_comv, sizeof(u32)); } =20 static void iris_hfi_gen2_get_buffer(u32 domain, struct iris_buffer *buffe= r, @@ -1257,7 +1257,7 @@ static int iris_hfi_gen2_session_queue_buffer(struct = iris_inst *inst, struct iri =20 iris_hfi_gen2_get_buffer(inst->domain, buffer, &hfi_buffer); if (buffer->type =3D=3D BUF_COMV) { - ret =3D iris_set_num_comv(inst); + ret =3D iris_hfi_gen2_set_num_comv(inst); if (ret) return ret; } --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 B7D65301701 for ; Fri, 20 Mar 2026 01:55:06 +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=1773971715; cv=none; b=VmCiLy5C5eH3EIycxncJ63DIPL7MzENmeBThMwTKIi8l2J7pMICSDA2CKFuajqaAuyiVe62KwlQg1uDO0s+LJIvszZg7M281SEUgqU+Mu3PVvMIu92jQs79TWd86YUuRx5hB31Q/gMoBwaRwlNNinQ1d8UcJV+GUmgOpPY/Q9p4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971715; c=relaxed/simple; bh=zxKHrPvxoidgL7dgWtDDRmoHHDeuNIL77Ya8mIt8yiQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZCfio2VMoTKNHGbFDSJ0d/WfUueW0jSYE1EgaRzVjnAvk27VoX8yvxLDN/NNs4mTUK/OMq9DUuNv7aMCX4IPgwwXcY7jm1tId7mR2DBK7xUyjLnk3SuMI3DNPGccr09p+fy7J9UUMRsgF0G/TjPGyQ6cbH1UPbXHVYacATSFGVo= 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=RD9GoyEQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=bI3garPY; 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="RD9GoyEQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="bI3garPY" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JM4EEP4170918 for ; Fri, 20 Mar 2026 01:55:06 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=RD9GoyEQvabASeKN nxH4EIpuKuwpiiL1vCo/bwD8cFl23RtCOQsuHTTSYyfGcOfT5Bz7yMgB09h8nUKm 3dNGKRkWnqDnd5B7kl94DtN+sEv1M/zA3NV/WN/srsgaqMjANWZg9Blmz++bvoUj jC5IQBh7Im6AaCFlquEXqxdysKv49VOY3/y8BrDi50mIR9tnOIU5cKI2p7DJ1Hwe kTSpyLaXlrccTqFhVXWDdcJsJi6b94T3T7g9KtZmyah298mQCfYiquWFRru0lgCt HbwBN7ZEzL0+Bfm+0R1ML95XK/CIEqmqPGsZNneUVF0mslf9iUCqldA+dCqn/ltM gJWNYw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0sm6gfyy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:05 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50939597b85so45223351cf.2 for ; Thu, 19 Mar 2026 18:55:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971704; x=1774576504; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=bI3garPYLQ9FM7E9q1gxaeZZsqxHzzltk11VqF74Z+slXdiNXJaYnaQCUiKcznGPYr XtHNlFRknsINtFq4zVvy+C0mh6Q84YufB3mWadOwP0J/kxFMmAwhoZqw4HIZ1LEtfRv3 JjozwCMXWLUF2sOqGJ2dRX4y6emoRA4PQncX/kLESRuZSNgSTjGJXFc8Pb1/seftLLQk xveIIVWxYo2IrooXe/zRp+ecQ7D2qhI35lZ4snCD28j7Oye8l/FllIX5+WAEyCGJTxvF /6pih7wGVHp0WdtLa4jlhimaISdD/xUv7npMZ6kstpdXjNxouLKs7NgDuWbRPLgYgnXE EmVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971704; x=1774576504; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GP1/j9iPrI0sglCjoXgnt69EFsYgdF0neK0NN3kO93o=; b=LlM5+Z/hir8UOYG+kGcxHOzzL1Tpn9wc0S1JTbW+Wy/YvCfeeM/NJu0Ju5dj9fFmgW CtPBDI7aTolpklSMjgEL+wdV/J/GTXGQMF0Qv55ceArwAekD8VOU0tFSV46FEPlslHJW ihz/lQCd12C/bnJHj4/mCwmE3opYE8IDF7ZnPq89S4ARI03RSPnf5gZ5chmGuWPSv8qH l15shOG2Hc2iDODTBFDACbJ1HO+QZNt/GKwzBYSzSpL3TclEPjRc0dHOjfBApqpPZj44 Tr9wvnkif+dPyXlQAdVysm9ThzhBpQiecqTeYWFeaamA0u6ImcWH45rBJVVvyDksqXag wZOQ== X-Forwarded-Encrypted: i=1; AJvYcCVW4vZPzN9GBXIPh5B4oAI/NqlHseTmohtNyLeq/kVdVfULR6RQZRki6F0m48ACF5VWovEwljrYTPNk67c=@vger.kernel.org X-Gm-Message-State: AOJu0YyglWFEd9gH3/r/OIhbM/Ch0JqPIe79s4BKz2gfGElymwIESu+F Y1s/ljW600GB/HodaPFHmN2ilib6LQyfeKmNjfaYJtzyLs3c9wwkP0J0l9y6/t0Y0rzaAwvdULY QuYaD+SA1pgUFse4R4K2ZFmn1AssWbqifYk4H9q24vPw+OsUj8T4PyBZ/lvl0pTk6p0c= X-Gm-Gg: ATEYQzyvqJxRX8Y3kSnqipMNZtiraSG3dCtdGKI7qFVHwlAvpE07pZ+4qLYvtxKVGFg xrgcsUqYOHKs36qt4D6dVrwi0i07sfv/Im7LgVP/zbozgq1ECa/xIDrOq5847TOx6/P605W2gjN V1HhkkcqxHo5UdoWKjS9vAhL+MRLavMlkop3QymzedU7STw1aSMOQfPo67RAs0QU7rK3oIdTtOJ 3ziMm99H+/0bo0nXcPKJ7wqIphoQ49bRKkwUE/BjAE1n8nR5OJR+EfWyv1ZteV7khmz9kxX7Thi WXuPwfmuPVkhAWXqJ71SQg6KpQitMWWsr3VZ+vUZhGusNMoOxLjDMgNavEs2GPaC3NwU8OJESh6 6Pyac4gTUo7FqG9X1b7bYS8U03JwHIzxEeIUIO2mFMPVcNI+uCJV3lghDqAhaQFgOMusfKvc8OS 3LNdbdBGEW1VseXxMFn/tntIlBf+DmByVOPCg= X-Received: by 2002:a05:622a:7c99:b0:509:1f59:1eb1 with SMTP id d75a77b69052e-50b3759feeemr13676261cf.72.1773971704285; Thu, 19 Mar 2026 18:55:04 -0700 (PDT) X-Received: by 2002:a05:622a:7c99:b0:509:1f59:1eb1 with SMTP id d75a77b69052e-50b3759feeemr13676081cf.72.1773971703755; Thu, 19 Mar 2026 18:55:03 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:01 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:44 +0200 Subject: [PATCH v9 04/11] media: qcom: iris: split HFI session ops from core ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-4-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=23792; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=zxKHrPvxoidgL7dgWtDDRmoHHDeuNIL77Ya8mIt8yiQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjldBiQWjUUEj9jX9+IC6Mo/nB8x1frKDK6B meVcygBEmCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5QAKCRCLPIo+Aiko 1UROB/0caOtXmnfETg2Ns4m1/hzbkrxlWsfU41083trtOt3WAvMoDZIfNEeuwMGVAnmDEx20V74 oyOUQx6ZWIx3kJaomjSFyDAJMOwjp50ByBIVa/wattFdh3M8zJT3TYBU1iowvbzCzSZGdP6Mwvx ScSeCBxIN9/WTEQ6ft8TEWOU+rH7Z5t9IbwICn7/YLh/dVgEPYof4Xd6Wpqi7MKj8jxuxbdHxES dfrTvbvpvn4rZLhOTvbvVHkKtQQq4fArKXwzoZfM0Uw2LAcjizcINNrfFPDIOWcSkl2A1Y8DVVH 74i/m86yYtDPGMCryyVN/s2Eyt76kmEVYmzOrRliMJTcclgg X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: X4ELO-KU5gfD5e0ozwfMNXQzCCeKPeXH X-Authority-Analysis: v=2.4 cv=Rv/I7SmK c=1 sm=1 tr=0 ts=69bca8f9 cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=GJ9kf5zHVpckMw0GqqUA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfXzIG5+KGNz2bk /YafUIvbb/5Oip7GkHWFinmsZM9HKb7c6LUEN2+LrN87S0hMTwAkU8so6IaOp2OW4Kv+oofPSKY so0gkaSTZOXYlVgbhZBFdtFkq41xajyXaO8xoDpH8g8AyUFW9YbNoHGSu+ydHcYm6h/k1O7CBRk izuD/CGX3hkwMREd+LFPjYdWIYDOVz2RYgaTf9DAOK/WiV45D8+C77wr4MZtV/T7m/lwEJGZDQZ SG3zRQ/JzhuwA2hm+u/LblBF7Y93iYgUxGvXyowdJmpAwUeZVUKEm1XbwDTojUkxvtr6XKTGqjc 2k45LROl/7T6I8jkx8MJR1CqLhq+hu1oy4mLGXnTyvUWeKra26ZEIF/ZdMQK0ZzaZ4UV/FDtGmE VuMF5pDwUrjFZpYpul0ApANqbHoZJCi551cT6aGr4VNanXE6ZHYiYy54z032tkiMsL7mgtHxnWi PsPfqokbZxgRPmatyRQ== X-Proofpoint-ORIG-GUID: X4ELO-KU5gfD5e0ozwfMNXQzCCeKPeXH 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 Calling HFI instance-specific ops should not require double indirection through the core ops. Split instance-specific ops to a separate struct, keep a pointer to it in struct iris_inst and set it directly in the get_instance function. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 4 +- drivers/media/platform/qcom/iris/iris_common.c | 8 ++-- drivers/media/platform/qcom/iris/iris_ctrls.c | 46 +++++++++++-------= ---- drivers/media/platform/qcom/iris/iris_hfi_common.h | 3 ++ .../platform/qcom/iris/iris_hfi_gen1_command.c | 23 ++++++++--- .../platform/qcom/iris/iris_hfi_gen2_command.c | 17 +++++--- drivers/media/platform/qcom/iris/iris_instance.h | 4 ++ drivers/media/platform/qcom/iris/iris_vb2.c | 2 +- drivers/media/platform/qcom/iris/iris_vdec.c | 6 +-- drivers/media/platform/qcom/iris/iris_venc.c | 4 +- drivers/media/platform/qcom/iris/iris_vidc.c | 2 +- 11 files changed, 72 insertions(+), 47 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index 9151f43bc6b9..f55b7c608116 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -404,7 +404,7 @@ int iris_create_internal_buffers(struct iris_inst *inst= , u32 plane) =20 int iris_queue_buffer(struct iris_inst *inst, struct iris_buffer *buf) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; int ret; =20 ret =3D hfi_ops->session_queue_buf(inst, buf); @@ -572,7 +572,7 @@ int iris_destroy_dequeued_internal_buffers(struct iris_= inst *inst, u32 plane) static int iris_release_internal_buffers(struct iris_inst *inst, enum iris_buffer_type buffer_type) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; struct iris_buffers *buffers =3D &inst->buffers[buffer_type]; struct iris_buffer *buffer, *next; int ret; diff --git a/drivers/media/platform/qcom/iris/iris_common.c b/drivers/media= /platform/qcom/iris/iris_common.c index 7f1c7fe144f7..25836561bcf3 100644 --- a/drivers/media/platform/qcom/iris/iris_common.c +++ b/drivers/media/platform/qcom/iris/iris_common.c @@ -48,7 +48,7 @@ void iris_set_ts_metadata(struct iris_inst *inst, struct = vb2_v4l2_buffer *vbuf) =20 int iris_process_streamon_input(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; enum iris_inst_sub_state set_sub_state =3D 0; int ret; =20 @@ -90,7 +90,7 @@ int iris_process_streamon_input(struct iris_inst *inst) =20 int iris_process_streamon_output(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; enum iris_inst_sub_state clear_sub_state =3D 0; bool drain_active, drc_active, first_ipsc; int ret =3D 0; @@ -189,7 +189,7 @@ static void iris_flush_deferred_buffers(struct iris_ins= t *inst, =20 static void iris_kill_session(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; =20 if (!inst->session_id) return; @@ -200,7 +200,7 @@ static void iris_kill_session(struct iris_inst *inst) =20 int iris_session_streamoff(struct iris_inst *inst, u32 plane) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; enum iris_buffer_type buffer_type; int ret; =20 diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 3cec957580f5..5a24aa869b2d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -399,7 +399,7 @@ static u32 iris_get_port_info(struct iris_inst *inst, =20 int iris_set_u32_enum(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_value =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -412,7 +412,7 @@ int iris_set_u32_enum(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_u32(struct iris_inst *inst, enum platform_inst_fw_cap_type ca= p_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_value =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -425,7 +425,7 @@ int iris_set_u32(struct iris_inst *inst, enum platform_= inst_fw_cap_type cap_id) =20 int iris_set_stage(struct iris_inst *inst, enum platform_inst_fw_cap_type = cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; struct v4l2_format *inp_f =3D inst->fmt_src; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 height =3D inp_f->fmt.pix_mp.height; @@ -446,7 +446,7 @@ int iris_set_stage(struct iris_inst *inst, enum platfor= m_inst_fw_cap_type cap_id =20 int iris_set_pipe(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 work_route =3D inst->fw_caps[PIPE].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -459,7 +459,7 @@ int iris_set_pipe(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_id) =20 int iris_set_profile(struct iris_inst *inst, enum platform_inst_fw_cap_typ= e cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_id, hfi_value; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { @@ -479,7 +479,7 @@ int iris_set_profile(struct iris_inst *inst, enum platf= orm_inst_fw_cap_type cap_ =20 int iris_set_level(struct iris_inst *inst, enum platform_inst_fw_cap_type = cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_id, hfi_value; =20 if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { @@ -499,7 +499,7 @@ int iris_set_level(struct iris_inst *inst, enum platfor= m_inst_fw_cap_type cap_id =20 int iris_set_profile_level_gen1(struct iris_inst *inst, enum platform_inst= _fw_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; struct hfi_profile_level pl; =20 @@ -520,7 +520,7 @@ int iris_set_profile_level_gen1(struct iris_inst *inst,= enum platform_inst_fw_ca =20 int iris_set_header_mode_gen1(struct iris_inst *inst, enum platform_inst_f= w_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 header_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; @@ -539,7 +539,7 @@ int iris_set_header_mode_gen1(struct iris_inst *inst, e= num platform_inst_fw_cap_ =20 int iris_set_header_mode_gen2(struct iris_inst *inst, enum platform_inst_f= w_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 prepend_sps_pps =3D inst->fw_caps[PREPEND_SPSPPS_TO_IDR].value; u32 header_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -561,7 +561,7 @@ int iris_set_header_mode_gen2(struct iris_inst *inst, e= num platform_inst_fw_cap_ =20 int iris_set_bitrate(struct iris_inst *inst, enum platform_inst_fw_cap_typ= e cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 entropy_mode =3D inst->fw_caps[ENTROPY_MODE].value; u32 bitrate =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -586,7 +586,7 @@ int iris_set_bitrate(struct iris_inst *inst, enum platf= orm_inst_fw_cap_type cap_ =20 int iris_set_peak_bitrate(struct iris_inst *inst, enum platform_inst_fw_ca= p_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 rc_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 peak_bitrate =3D inst->fw_caps[cap_id].value; u32 bitrate =3D inst->fw_caps[BITRATE].value; @@ -613,7 +613,7 @@ int iris_set_peak_bitrate(struct iris_inst *inst, enum = platform_inst_fw_cap_type =20 int iris_set_bitrate_mode_gen1(struct iris_inst *inst, enum platform_inst_= fw_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 bitrate_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 frame_rc =3D inst->fw_caps[FRAME_RC_ENABLE].value; u32 frame_skip =3D inst->fw_caps[FRAME_SKIP_MODE].value; @@ -640,7 +640,7 @@ int iris_set_bitrate_mode_gen1(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_bitrate_mode_gen2(struct iris_inst *inst, enum platform_inst_= fw_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 bitrate_mode =3D inst->fw_caps[BITRATE_MODE].value; u32 frame_rc =3D inst->fw_caps[FRAME_RC_ENABLE].value; u32 frame_skip =3D inst->fw_caps[FRAME_SKIP_MODE].value; @@ -667,7 +667,7 @@ int iris_set_bitrate_mode_gen2(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_entropy_mode_gen1(struct iris_inst *inst, enum platform_inst_= fw_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 entropy_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; @@ -687,7 +687,7 @@ int iris_set_entropy_mode_gen1(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_entropy_mode_gen2(struct iris_inst *inst, enum platform_inst_= fw_cap_type cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 entropy_mode =3D inst->fw_caps[cap_id].value; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 profile; @@ -712,7 +712,7 @@ int iris_set_entropy_mode_gen2(struct iris_inst *inst, = enum platform_inst_fw_cap =20 int iris_set_min_qp(struct iris_inst *inst, enum platform_inst_fw_cap_type= cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0; u32 i_frame_qp =3D 0, p_frame_qp =3D 0, b_frame_qp =3D 0; u32 min_qp_enable =3D 0, client_qp_enable =3D 0; @@ -776,7 +776,7 @@ int iris_set_min_qp(struct iris_inst *inst, enum platfo= rm_inst_fw_cap_type cap_i =20 int iris_set_max_qp(struct iris_inst *inst, enum platform_inst_fw_cap_type= cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0; u32 max_qp_enable =3D 0, client_qp_enable; u32 i_frame_qp, p_frame_qp, b_frame_qp; @@ -841,7 +841,7 @@ int iris_set_max_qp(struct iris_inst *inst, enum platfo= rm_inst_fw_cap_type cap_i =20 int iris_set_frame_qp(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 i_qp_enable =3D 0, p_qp_enable =3D 0, b_qp_enable =3D 0, client_qp_en= able; u32 i_frame_qp, p_frame_qp, b_frame_qp; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; @@ -902,7 +902,7 @@ int iris_set_frame_qp(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_qp_range(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; struct hfi_quantization_range_v2 range; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; =20 @@ -923,7 +923,7 @@ int iris_set_qp_range(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_rotation(struct iris_inst *inst, enum platform_inst_fw_cap_ty= pe cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val; =20 @@ -953,7 +953,7 @@ int iris_set_rotation(struct iris_inst *inst, enum plat= form_inst_fw_cap_type cap =20 int iris_set_flip(struct iris_inst *inst, enum platform_inst_fw_cap_type c= ap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; u32 hfi_id =3D inst->fw_caps[cap_id].hfi_id; u32 hfi_val =3D HFI_DISABLE_FLIP; =20 @@ -972,7 +972,7 @@ int iris_set_flip(struct iris_inst *inst, enum platform= _inst_fw_cap_type cap_id) =20 int iris_set_ir_period(struct iris_inst *inst, enum platform_inst_fw_cap_t= ype cap_id) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; struct vb2_queue *q =3D v4l2_m2m_get_dst_vq(inst->m2m_ctx); u32 ir_period =3D inst->fw_caps[cap_id].value; u32 ir_type =3D 0; @@ -998,7 +998,7 @@ int iris_set_ir_period(struct iris_inst *inst, enum pla= tform_inst_fw_cap_type ca =20 int iris_set_properties(struct iris_inst *inst, u32 plane) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; struct platform_inst_fw_cap *cap; int ret; u32 i; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 3edb5ae582b4..18684ada78b2 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -110,6 +110,9 @@ struct iris_hfi_command_ops { int (*sys_image_version)(struct iris_core *core); int (*sys_interframe_powercollapse)(struct iris_core *core); int (*sys_pc_prep)(struct iris_core *core); +}; + +struct iris_hfi_session_ops { int (*session_set_config_params)(struct iris_inst *inst, u32 plane); int (*session_set_property)(struct iris_inst *inst, u32 packet_type, u32 flag, u32 plane, u32 payload_type, diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index e42d17653c2c..a28b0c7ebbad 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1063,11 +1063,7 @@ static int iris_hfi_gen1_session_set_config_params(s= truct iris_inst *inst, u32 p return 0; } =20 -static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { - .sys_init =3D iris_hfi_gen1_sys_init, - .sys_image_version =3D iris_hfi_gen1_sys_image_version, - .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, - .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, +static const struct iris_hfi_session_ops iris_hfi_gen1_session_ops =3D { .session_open =3D iris_hfi_gen1_session_open, .session_set_config_params =3D iris_hfi_gen1_session_set_config_params, .session_set_property =3D iris_hfi_gen1_session_set_property, @@ -1080,6 +1076,13 @@ static const struct iris_hfi_command_ops iris_hfi_ge= n1_command_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 +static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { + .sys_init =3D iris_hfi_gen1_sys_init, + .sys_image_version =3D iris_hfi_gen1_sys_image_version, + .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, + .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, +}; + void iris_hfi_gen1_command_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen1_command_ops; @@ -1087,5 +1090,13 @@ void iris_hfi_gen1_command_ops_init(struct iris_core= *core) =20 struct iris_inst *iris_hfi_gen1_get_instance(void) { - return kzalloc_obj(struct iris_inst); + struct iris_inst *out; + + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->hfi_session_ops =3D &iris_hfi_gen1_session_ops; + + return out; } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index e4f25b7f5d04..ffb70fd9499c 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1300,11 +1300,7 @@ static int iris_hfi_gen2_session_release_buffer(stru= ct iris_inst *inst, struct i inst_hfi_gen2->packet->size); } =20 -static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { - .sys_init =3D iris_hfi_gen2_sys_init, - .sys_image_version =3D iris_hfi_gen2_sys_image_version, - .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, - .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, +static const struct iris_hfi_session_ops iris_hfi_gen2_session_ops =3D { .session_open =3D iris_hfi_gen2_session_open, .session_set_config_params =3D iris_hfi_gen2_session_set_config_params, .session_set_property =3D iris_hfi_gen2_session_set_property, @@ -1319,6 +1315,13 @@ static const struct iris_hfi_command_ops iris_hfi_ge= n2_command_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 +static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { + .sys_init =3D iris_hfi_gen2_sys_init, + .sys_image_version =3D iris_hfi_gen2_sys_image_version, + .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, + .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, +}; + void iris_hfi_gen2_command_ops_init(struct iris_core *core) { core->hfi_ops =3D &iris_hfi_gen2_command_ops; @@ -1330,6 +1333,10 @@ struct iris_inst *iris_hfi_gen2_get_instance(void) =20 /* The allocation is intentionally larger than struct iris_inst. */ out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->inst.hfi_session_ops =3D &iris_hfi_gen2_session_ops; =20 return &out->inst; } diff --git a/drivers/media/platform/qcom/iris/iris_instance.h b/drivers/med= ia/platform/qcom/iris/iris_instance.h index 16965150f427..352af99699dd 100644 --- a/drivers/media/platform/qcom/iris/iris_instance.h +++ b/drivers/media/platform/qcom/iris/iris_instance.h @@ -15,6 +15,8 @@ #define DEFAULT_WIDTH 320 #define DEFAULT_HEIGHT 240 =20 +struct iris_hfi_session_ops; + enum iris_fmt_type_out { IRIS_FMT_H264, IRIS_FMT_HEVC, @@ -38,6 +40,7 @@ struct iris_fmt { * @list: used for attach an instance to the core * @core: pointer to core structure * @session_id: id of current video session + * @hfi_session_ops: iris HFI session ops * @ctx_q_lock: lock to serialize queues related ioctls * @lock: lock to seralise forward and reverse threads * @fh: reference of v4l2 file handler @@ -80,6 +83,7 @@ struct iris_inst { struct list_head list; struct iris_core *core; u32 session_id; + const struct iris_hfi_session_ops *hfi_session_ops; struct mutex ctx_q_lock;/* lock to serialize queues related ioctls */ struct mutex lock; /* lock to serialize forward and reverse threads */ struct v4l2_fh fh; diff --git a/drivers/media/platform/qcom/iris/iris_vb2.c b/drivers/media/pl= atform/qcom/iris/iris_vb2.c index bf0b8400996e..a2ea2d67f60d 100644 --- a/drivers/media/platform/qcom/iris/iris_vb2.c +++ b/drivers/media/platform/qcom/iris/iris_vb2.c @@ -129,7 +129,7 @@ int iris_vb2_queue_setup(struct vb2_queue *q, if (!inst->once_per_session_set) { inst->once_per_session_set =3D true; =20 - ret =3D core->hfi_ops->session_open(inst); + ret =3D inst->hfi_session_ops->session_open(inst); if (ret) { ret =3D -EINVAL; dev_err(core->dev, "session open failed\n"); diff --git a/drivers/media/platform/qcom/iris/iris_vdec.c b/drivers/media/p= latform/qcom/iris/iris_vdec.c index 719217399a30..ccda3b9fb845 100644 --- a/drivers/media/platform/qcom/iris/iris_vdec.c +++ b/drivers/media/platform/qcom/iris/iris_vdec.c @@ -374,7 +374,7 @@ int iris_vdec_streamon_input(struct iris_inst *inst) =20 int iris_vdec_streamon_output(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; int ret; =20 ret =3D hfi_ops->session_set_config_params(inst, V4L2_BUF_TYPE_VIDEO_CAPT= URE_MPLANE); @@ -434,7 +434,7 @@ int iris_vdec_qbuf(struct iris_inst *inst, struct vb2_v= 4l2_buffer *vbuf) =20 int iris_vdec_start_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; enum iris_inst_sub_state clear_sub_state =3D 0; struct vb2_queue *dst_vq; int ret; @@ -497,7 +497,7 @@ int iris_vdec_start_cmd(struct iris_inst *inst) =20 int iris_vdec_stop_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; int ret; =20 ret =3D hfi_ops->session_drain(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); diff --git a/drivers/media/platform/qcom/iris/iris_venc.c b/drivers/media/p= latform/qcom/iris/iris_venc.c index aa27b22704eb..aeed756ee9ca 100644 --- a/drivers/media/platform/qcom/iris/iris_venc.c +++ b/drivers/media/platform/qcom/iris/iris_venc.c @@ -581,7 +581,7 @@ int iris_venc_qbuf(struct iris_inst *inst, struct vb2_v= 4l2_buffer *vbuf) =20 int iris_venc_start_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; enum iris_inst_sub_state clear_sub_state =3D 0; struct vb2_queue *dst_vq; int ret; @@ -623,7 +623,7 @@ int iris_venc_start_cmd(struct iris_inst *inst) =20 int iris_venc_stop_cmd(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; int ret; =20 ret =3D hfi_ops->session_drain(inst, V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE); diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index bd38d84c9cc7..7e03d63578e1 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -224,7 +224,7 @@ int iris_open(struct file *filp) =20 static void iris_session_close(struct iris_inst *inst) { - const struct iris_hfi_command_ops *hfi_ops =3D inst->core->hfi_ops; + const struct iris_hfi_session_ops *hfi_ops =3D inst->hfi_session_ops; bool wait_for_response =3D true; int ret; =20 --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 4583E329C78 for ; Fri, 20 Mar 2026 01:55:10 +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=1773971717; cv=none; b=gNLyseJLoBbwHlZ+0qupepoVizD5NE4/s7MQlIs5RgIwZs3teUhgZToAjMU8gakmj2W/0oG+jKfwmlp/sVtOYTkiC1YIhS2VJ2fr99HhMiytCQQHXKM8ZEJxhRBqhzwXh7uXOpbtF9ZuxCHrcqvr8HJQ3NU7SF+fQdQ+Ll8g5KA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971717; c=relaxed/simple; bh=IShqxTkADtDQW3CMBXgFdhh3KcR1qyw1KyQi3vVr0rs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=JEJyql1WcKV5z/xMiEFUvPI14AoMuETfaKnHhaf5A5WcMCFzD124XkkfxOAhmsRB5vplxT15YkJngCux0gOSv9P5x3L94GEEEazSYcFt37V11Trn5bzzVorz2L2HbqNnZ26ZLLAoWcDE7E6MfS5f1s0RbPl32ofTdpFu+BxQd78= 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=gns483eQ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=O7lgpIFu; 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="gns483eQ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="O7lgpIFu" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JMHcGm694455 for ; Fri, 20 Mar 2026 01:55:09 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=gns483eQek0VUTu/ iydvR0ikrM9GPt9Cs/G06NEv2Ip6rb1r/die3Y1sZDDPcBg431q9cvv5qH28xhde nYmLI3no5M3lMEG/r06GKhdMA653/KYdRVgkkengeLjk4496qv5p3uxIwLNM2kLe AbHv9kOQNxmuFhGynPCybJF76iie5+iZ7lJHWvuU/iHvj46wQOoheAiX/mOTsG+Q zojBk7AzdfAlgDC06gx52A28OtICyTcRrgTWKuS18OVLzXLIN7hRfspvgRO/AM8B XCbJXmBvr4Ov4BsEGQVjrsfi/vaEf/F8xe7n3Woz4o6/eIZAnRy9Zr4BcwzCksuq NXaPAA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d083rbytf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:09 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50b2cbe7223so81966291cf.2 for ; Thu, 19 Mar 2026 18:55:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971708; x=1774576508; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=O7lgpIFuzLFcSGp+4Uv/ZG36XldktigEoRzWSst01eLxb2505+FGqmmd0IbLvae6WR PYxAwXkv+vb6rIvO6AzeB0hsIwB1qCbtQA1pSYsTO2xd7lv9OC6XybLYZbOlB/HaB7e/ qOyh8DNEgC80HMjxC68xYZt1OsFAtkK8+6y6i+PfXXzSq5X9CUx8N4Ykh9nz2epEtgKf cw5sPn2CQnrHZHgHoDMvFgj1e4EN9zm48k/gLWiNanMtdRqtloX7J13WmUzj1DW/mQDq PXkup9ey3J58tIEgXVZLXwfyZRXgIFr6u9wrPJ9qQEO+4Zkln8PszSac4QmSBZCX3IEI PZiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971708; x=1774576508; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LTwg8Ray2KFhbuMU3wn8Jce8o346Gp0YHy3SLl+GLyg=; b=DIUtJvaqgvJReWW3wF6p3W3WFuA0a23ZgiGn1EXLJ8Sr9SDO6atoYot9SBW5RR+eWL lmh4UGuYZHqJozSo8sXjaHfU7KzyB1ynsik5cPLRA7gLyvMlC4KrM0KHSyiV6X+tO5MU UiMAmqRafl3VDIeoSJiGR+s7PpQfNcVHHMgV0dG1KekOQOCQShHl0H90jgPJmYg1DqMI 4Z+OGm/vodCEm4lTic6R3dwTHGRnt7f7JnQuDE70ug37eNyMf177c2WvUmrMFcI4Q5ZG Hg9MCZAoTQEjxojpmD6fmTED+QAM5UfRsLKbVEputWc/F5T416/qELGObpToJ8LNq9lT 7C/g== X-Forwarded-Encrypted: i=1; AJvYcCWEOQVD8v5h1hFt6K/KEZNYqdSf7iTJdIBciOEwRrcce5MtmliusYbZGQiOswz0d5wP8rSr74YeWZJxJAg=@vger.kernel.org X-Gm-Message-State: AOJu0Yy1pNiMeHkos2HVa/MDbQFosl8bYf2rlRDR//MBFKADyRXYiFOR QOljYonWTCrHE3snkcPSTG5GqN1Mwn5yu1N8gWQfV5HBdk7lXptSNYQ4gvbQWnrPY9klm+l+xNu 3LkCZBpuYMzYaxcHhzsIncXR0X+Bag3+MpKFe+anKC/HNkch/Fl7alyAJlEwQXYMDg+A= X-Gm-Gg: ATEYQzzevD0pEVIK5k9OgrqpJILr5we51Dc4/GIvpHT6mREQ2TtwtZSdd3aZgirg0kW VKTvx/sp14r1pOnLd2/YCBaaGwUxeXBohKqTOy5pr1N/HXvmhNJBzDxj3CHUG7ut/9cOEEHe5Dt kO8KSlCp2w4xrlhSmaJNnSvTHTx0Y2PbW05Tx2CRTAEFq2SvbbgZgycXb4T9dD/+SCYOJUmkC1T OVdtu8fGDAD2eRyD6chuoTwcJL7h+VsprjnvJU1yk2At6xKUgO9DeRl6uMQg5egI/44+H0z+9ox ipD+2jdVP2GSj7aPsTFgQgLSwaL9/wweFToo1Y25npFl5j6UyhQjzcZ+69cuTNAIaLfu1iWbO6e q9c8JTviMYmbnzPk1nm1YHU3nJzImkrbDhs4O0wh5EkvdUSQgJge7MZFB6wHZEamttLPIQo5Lzf miJrdL5tUt9Lh5Md5IggyFkCcYVBjV58XXrGA= X-Received: by 2002:a05:622a:a9c3:10b0:509:17e4:ceff with SMTP id d75a77b69052e-50b37432beamr17577501cf.31.1773971708091; Thu, 19 Mar 2026 18:55:08 -0700 (PDT) X-Received: by 2002:a05:622a:a9c3:10b0:509:17e4:ceff with SMTP id d75a77b69052e-50b37432beamr17577281cf.31.1773971707587; Thu, 19 Mar 2026 18:55:07 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:05 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:45 +0200 Subject: [PATCH v9 05/11] media: qcom: iris: merge hfi_response_ops and hfi_command_ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-5-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=15797; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=IShqxTkADtDQW3CMBXgFdhh3KcR1qyw1KyQi3vVr0rs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjlVRLd6P+1jb6B+QvnwHNlRveRrCIBAq+6i m5zs67YOlqJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5QAKCRCLPIo+Aiko 1UHsB/9oPgk0JRZM+YDBSKZh45yfmmHHVZouOahkld3j7qnSHMhwO8N2V3QzVsixq+TNRuHIwtN 4JAZlHaACGBvuOAWn4SUNeyaUBjj//2yEJ3igwHe55b1Wnld1KNkl6qySAGf9JBM59x4IA3Tcc6 X8kKQdJrLgTfsgbj5y6RRctXU3LAYqssN5r39E+XgqpOip7tWac7GOQ+l6Sl7vDtVizgLSiTSWD leMbWEbjf3yoWIwB4sZQUKcUwsX5AMT0ReKZ10jqT2B9tlM+v7MKuoH8FBzwZOBawQvm+95vwVB GWxLHk0HDkUckIQEA13tgSyQMlWhkTID8ukqz8nTttGkU9XR X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: 6tdLdlgcx9hFLMWylrrcEZDGwtpQeCpc X-Proofpoint-ORIG-GUID: 6tdLdlgcx9hFLMWylrrcEZDGwtpQeCpc X-Authority-Analysis: v=2.4 cv=ApTjHe9P c=1 sm=1 tr=0 ts=69bca8fd cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=6t3FZmZJ4ffncKB-xNAA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX7z2OS07Qglop TyJqX1QFYaneaPPJnPMA/3aLt83ZUIUVwq9MIuT8VOYhC2VTTIL8YVk9KS0AHx4baPp76d4Rzif aHvg6Z7g04iUOq2Oj/gVT/qT8LyYS0+sz9MATYXgb1z7kmXttTuUi7eTs9QYWj4C1qPZCN+0gJS ePeA0LyiG/OXrOy23eCvdQ/Il7hCzdVvK2lUCXK4e7Hxytfiej/3ftZdfNvtzn4fF2fTRSv1HIp MYW44AyKnsAu6lA0uFDWB7Ta7yJ1L7IZHlBPuhAfNEBgQfhaGr2diuUZQjF1f6CJaWibZbaSJSF dEtjT4/7I3LkyxLlD+PCM78KkSv2h9x0DIyZY8PpVFTz/22V+gfBVxvP6WPui7DBpIC6GgvCEqM VXoDUG4Be0JfWL+KSWPXmvOxqC+FveXKhPfJy/CsD+Z+VkF31MSaXGuXd5csplD1N746OaojgWT LmDPD5t3Ei9mAWpEPyQ== 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 lowpriorityscore=0 adultscore=0 malwarescore=0 suspectscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 spamscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 There is little point in having two different structures for HFI-related core ops. Merge both of them into the new iris_hfi_ops structure. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.h | 6 ++---- drivers/media/platform/qcom/iris/iris_hfi_common.c | 6 +++--- drivers/media/platform/qcom/iris/iris_hfi_common.h | 8 +++----- drivers/media/platform/qcom/iris/iris_hfi_gen1.h | 4 ++-- drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c | 8 +++++--- drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c | 11 +---------- drivers/media/platform/qcom/iris/iris_hfi_gen2.h | 4 ++-- drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c | 8 +++++--- drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c | 11 +---------- drivers/media/platform/qcom/iris/iris_platform_common.h | 3 +-- drivers/media/platform/qcom/iris/iris_platform_gen1.c | 6 ++---- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 12 ++++-------- drivers/media/platform/qcom/iris/iris_probe.c | 3 +-- drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +- 14 files changed, 33 insertions(+), 59 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index d10a03aa5685..1592681640ab 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -68,8 +68,7 @@ struct qcom_ubwc_cfg_data; * @header_id: id of packet header * @packet_id: id of packet * @power: a structure for clock and bw information - * @hfi_ops: iris hfi command ops - * @hfi_response_ops: iris hfi response ops + * @hfi_sys_ops: iris HFI system ops * @core_init_done: structure of signal completion for system response * @intr_status: interrupt status * @sys_error_handler: a delayed work for handling system fatal error @@ -112,8 +111,7 @@ struct iris_core { u32 header_id; u32 packet_id; struct iris_core_power power; - const struct iris_hfi_command_ops *hfi_ops; - const struct iris_hfi_response_ops *hfi_response_ops; + const struct iris_hfi_sys_ops *hfi_sys_ops; struct completion core_init_done; u32 intr_status; struct delayed_work sys_error_handler; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.c b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.c index 92112eb16c11..ad8e4ecb8605 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.c @@ -76,7 +76,7 @@ u32 iris_hfi_get_v4l2_matrix_coefficients(u32 hfi_coeffic= ients) =20 int iris_hfi_core_init(struct iris_core *core) { - const struct iris_hfi_command_ops *hfi_ops =3D core->hfi_ops; + const struct iris_hfi_sys_ops *hfi_ops =3D core->hfi_sys_ops; int ret; =20 ret =3D hfi_ops->sys_init(core); @@ -109,7 +109,7 @@ irqreturn_t iris_hfi_isr_handler(int irq, void *data) iris_vpu_clear_interrupt(core); mutex_unlock(&core->lock); =20 - core->hfi_response_ops->hfi_response_handler(core); + core->hfi_sys_ops->sys_hfi_response_handler(core); =20 if (!iris_vpu_watchdog(core, core->intr_status)) enable_irq(irq); @@ -144,7 +144,7 @@ int iris_hfi_pm_suspend(struct iris_core *core) =20 int iris_hfi_pm_resume(struct iris_core *core) { - const struct iris_hfi_command_ops *ops =3D core->hfi_ops; + const struct iris_hfi_sys_ops *ops =3D core->hfi_sys_ops; int ret; =20 ret =3D iris_vpu_power_on(core); diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 18684ada78b2..9aa84a1d8f95 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -105,11 +105,13 @@ struct iris_hfi_prop_type_handle { int (*handle)(struct iris_inst *inst, u32 plane); }; =20 -struct iris_hfi_command_ops { +struct iris_hfi_sys_ops { int (*sys_init)(struct iris_core *core); int (*sys_image_version)(struct iris_core *core); int (*sys_interframe_powercollapse)(struct iris_core *core); int (*sys_pc_prep)(struct iris_core *core); + + void (*sys_hfi_response_handler)(struct iris_core *core); }; =20 struct iris_hfi_session_ops { @@ -129,10 +131,6 @@ struct iris_hfi_session_ops { int (*session_close)(struct iris_inst *inst); }; =20 -struct iris_hfi_response_ops { - void (*hfi_response_handler)(struct iris_core *core); -}; - struct hfi_subscription_params { u32 bitstream_resolution; u32 crop_offsets[2]; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen1.h index 19b8e9054a75..38e9d262d7df 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -9,8 +9,8 @@ struct iris_core; struct iris_inst; =20 -void iris_hfi_gen1_command_ops_init(struct iris_core *core); -void iris_hfi_gen1_response_ops_init(struct iris_core *core); +void iris_hfi_gen1_sys_ops_init(struct iris_core *core); +void iris_hfi_gen1_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index a28b0c7ebbad..26b7feb05d15 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1076,16 +1076,18 @@ static const struct iris_hfi_session_ops iris_hfi_g= en1_session_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 -static const struct iris_hfi_command_ops iris_hfi_gen1_command_ops =3D { +static const struct iris_hfi_sys_ops iris_hfi_gen1_sys_ops =3D { .sys_init =3D iris_hfi_gen1_sys_init, .sys_image_version =3D iris_hfi_gen1_sys_image_version, .sys_interframe_powercollapse =3D iris_hfi_gen1_sys_interframe_powercolla= pse, .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, + + .sys_hfi_response_handler =3D iris_hfi_gen1_response_handler, }; =20 -void iris_hfi_gen1_command_ops_init(struct iris_core *core) +void iris_hfi_gen1_sys_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen1_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen1_sys_ops; } =20 struct iris_inst *iris_hfi_gen1_get_instance(void) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen1_response.c index 8e864c239e29..bfd7495bf44f 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_response.c @@ -688,7 +688,7 @@ static void iris_hfi_gen1_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen1_response_handler(struct iris_core *core) +void iris_hfi_gen1_response_handler(struct iris_core *core) { memset(core->response_packet, 0, sizeof(struct hfi_pkt_hdr)); while (!iris_hfi_queue_msg_read(core, core->response_packet)) { @@ -698,12 +698,3 @@ static void iris_hfi_gen1_response_handler(struct iris= _core *core) =20 iris_hfi_gen1_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen1_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen1_response_handler, -}; - -void iris_hfi_gen1_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen1_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen2.h index b9d3749a10ef..6cc6d9890c12 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -34,8 +34,8 @@ struct iris_inst_hfi_gen2 { struct hfi_subscription_params dst_subcr_params; }; =20 -void iris_hfi_gen2_command_ops_init(struct iris_core *core); -void iris_hfi_gen2_response_ops_init(struct iris_core *core); +void iris_hfi_gen2_sys_ops_init(struct iris_core *core); +void iris_hfi_gen2_response_handler(struct iris_core *core); struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index ffb70fd9499c..0c98d680bf09 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1315,16 +1315,18 @@ static const struct iris_hfi_session_ops iris_hfi_g= en2_session_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 -static const struct iris_hfi_command_ops iris_hfi_gen2_command_ops =3D { +static const struct iris_hfi_sys_ops iris_hfi_gen2_sys_ops =3D { .sys_init =3D iris_hfi_gen2_sys_init, .sys_image_version =3D iris_hfi_gen2_sys_image_version, .sys_interframe_powercollapse =3D iris_hfi_gen2_sys_interframe_powercolla= pse, .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, + + .sys_hfi_response_handler =3D iris_hfi_gen2_response_handler, }; =20 -void iris_hfi_gen2_command_ops_init(struct iris_core *core) +void iris_hfi_gen2_sys_ops_init(struct iris_core *core) { - core->hfi_ops =3D &iris_hfi_gen2_command_ops; + core->hfi_sys_ops =3D &iris_hfi_gen2_sys_ops; } =20 struct iris_inst *iris_hfi_gen2_get_instance(void) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c b/dr= ivers/media/platform/qcom/iris/iris_hfi_gen2_response.c index 8e19f61bbbf9..c350d231265e 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_response.c @@ -977,7 +977,7 @@ static void iris_hfi_gen2_flush_debug_queue(struct iris= _core *core, u8 *packet) } } =20 -static void iris_hfi_gen2_response_handler(struct iris_core *core) +void iris_hfi_gen2_response_handler(struct iris_core *core) { if (iris_vpu_watchdog(core, core->intr_status)) { struct iris_hfi_packet pkt =3D {.type =3D HFI_SYS_ERROR_WD_TIMEOUT}; @@ -997,12 +997,3 @@ static void iris_hfi_gen2_response_handler(struct iris= _core *core) =20 iris_hfi_gen2_flush_debug_queue(core, core->response_packet); } - -static const struct iris_hfi_response_ops iris_hfi_gen2_response_ops =3D { - .hfi_response_handler =3D iris_hfi_gen2_response_handler, -}; - -void iris_hfi_gen2_response_ops_init(struct iris_core *core) -{ - core->hfi_response_ops =3D &iris_hfi_gen2_response_ops; -} diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index d7106902698c..6b76a9046f9a 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -202,8 +202,7 @@ enum platform_pm_domain_type { }; =20 struct iris_platform_data { - void (*init_hfi_command_ops)(struct iris_core *core); - void (*init_hfi_response_ops)(struct iris_core *core); + void (*init_hfi_ops)(struct iris_core *core); struct iris_inst *(*get_instance)(void); u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); const struct vpu_ops *vpu_ops; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index ed07d1b00e43..dc74da04771b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -334,8 +334,7 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { =20 const struct iris_platform_data sm8250_data =3D { .get_instance =3D iris_hfi_gen1_get_instance, - .init_hfi_command_ops =3D &iris_hfi_gen1_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, + .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -387,8 +386,7 @@ const struct iris_platform_data sm8250_data =3D { =20 const struct iris_platform_data sc7280_data =3D { .get_instance =3D iris_hfi_gen1_get_instance, - .init_hfi_command_ops =3D &iris_hfi_gen1_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen1_response_ops_init, + .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index c84d4399f84d..19e99e1c2aff 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -908,8 +908,7 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { =20 const struct iris_platform_data sm8550_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, @@ -1008,8 +1007,7 @@ const struct iris_platform_data sm8550_data =3D { */ const struct iris_platform_data sm8650_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D sm8550_icc_table, @@ -1103,8 +1101,7 @@ const struct iris_platform_data sm8650_data =3D { =20 const struct iris_platform_data sm8750_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D sm8550_icc_table, @@ -1200,8 +1197,7 @@ const struct iris_platform_data sm8750_data =3D { */ const struct iris_platform_data qcs8300_data =3D { .get_instance =3D iris_hfi_gen2_get_instance, - .init_hfi_command_ops =3D iris_hfi_gen2_command_ops_init, - .init_hfi_response_ops =3D iris_hfi_gen2_response_ops_init, + .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index baa13cc5c209..fa561f6a736c 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -264,8 +264,7 @@ static int iris_probe(struct platform_device *pdev) disable_irq_nosync(core->irq); =20 iris_init_ops(core); - core->iris_platform_data->init_hfi_command_ops(core); - core->iris_platform_data->init_hfi_response_ops(core); + core->iris_platform_data->init_hfi_ops(core); =20 ret =3D iris_init_resources(core); if (ret) diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index faabf53126f3..dbce5aeba06c 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -149,7 +149,7 @@ int iris_vpu_prepare_pc(struct iris_core *core) if (!wfi_status || !idle_status) goto skip_power_off; =20 - ret =3D core->hfi_ops->sys_pc_prep(core); + ret =3D core->hfi_sys_ops->sys_pc_prep(core); if (ret) goto skip_power_off; =20 --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 9B3F12F3C19 for ; Fri, 20 Mar 2026 01:55:14 +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=1773971721; cv=none; b=UpihH1pntA+m3kbeuYG1vAZLI5SAWrMVyvYSgQkkjXdyvoAUtENl4cZe+21y4iD5a0gsEaIRY44m27WzE2BCSJ10joOwb9J0BPMZVfacvR1lCzc63N20P89sybYeaMumMyB6b7maRz9taaa1BcQDPWgPJYTPNWgVoae5fHVmj2s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971721; c=relaxed/simple; bh=mN2B8mMErlly0rhOY6EnYewAknm6tdZRVcCuF6xiQiQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p5IhgGWi/U8wNti4m9A/PnxaS79rqe8TdoWPKb+/X3rAYcOjtkU6b59tw3+SuArvSnPCs+9rzhZ4Dqd2IpzaZd9B3QZO++P1I9G48iRfbRGKXIUeqD4J6+eUX5eos1qeJTld1tpZBH4J1j7yfFkO0n2Ilbxw8nG+2SyUfkZ6QQg= 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=ek/dLCgy; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=TFmkIeqi; 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="ek/dLCgy"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="TFmkIeqi" 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 62JJdXGG2759548 for ; Fri, 20 Mar 2026 01:55:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=ek/dLCgyX7ODmMzt VERYmoZIMhFOyfAg5+ZY05V6EmCnM20KFDDe0YnG95z/AjamHACnbMuI4i5McZQm nMxnReqfVrRYxsK9qOnMgraR9zobqkE3RMcqrfW7v7bEeagMUJTypODIOdWiz6aM Bxr6yGQLj4IAEmOou16eG9fW9aDY89gi55QlkPRC81zIlIpewWROoW5kAE0KsF0S 0JEVPyld2V1y9cfWZayTYWNl1RQ5Z35GBQgXq8XvayhSY4AlQC2zzGk5PjZN0TLA GM6OBWoLPzKOXKSkxsFxeOARvWL+NT6lf8LtTBQ+/CWNipg3GGmSNksh7uMr++qR 5WGifg== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0qg78tkj-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:13 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-50939597b85so45228871cf.2 for ; Thu, 19 Mar 2026 18:55:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971712; x=1774576512; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=TFmkIeqibcjitixwYhsixtnNTW79x2d7DPeMN3laSuhk5qXi0PwOqmc07n6aohgq70 tLKY0eeM3kG4OgUNCIjUoMnUrYbyH+fA9EShes98JEPrbGEBreIt6aTAad+k+Qsl82n1 1FfIwdotX0S46j2rcK75NZaAyPOgyhxkxnJJuYk2eGnSUirPpkRCS9KtuxxaTGK5v2TW omVgfL7/qihBk9AiAOsqrg0a0yT6BExwLO4QCALeRcg/anKvZQqrLWjRZvv8AMT7y5o+ zyWcRRfPF3dLpvk28twwvS1xyfXiylK4OK31VXCs6j34MeUMiHKA+AnbzMx/wpEv2JcX KBCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971712; x=1774576512; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=X3roVKO9HbGyFQCP9qFC8PS8kvPsGONebIVZO3TAK2Y=; b=BB7JgUKJCSeMclWLceSjgFBe8mghiPJw5KuxX5eU5/lLfVqxous0ozEQEtLC2a5Jt3 +KY5u5yRnK/w4oyMNq83qEEeXcQQybqGmvqfRAxZaCxIat5S3yVZYrRvKExp0xOU+B/y N898eACpTKJn2YMfsPXidwShnHkW0KVzCa3iJDHosNjS+DG1KXCS5Lc33Ai+Yyl+VY/+ css8N4lDEiLeAGvfGtZ2RVztNTNBOWI1GxdeGbmzVvgfRjQJFaMMEkmfbKoZXNfqpsVF smgTTzoqWbgiF5sTxixV6Xqnj9BMv4wUuf1aKRRtr2+RT2xIynQLi/GdkmFhE9TVltbP +cEg== X-Forwarded-Encrypted: i=1; AJvYcCVGFQY7u0Ep1tT3ibgGx43XPdUyFxAy1oYAoxKrZOOf6hnzDJSHixJtTyPrKYXsxXF4uNUz3+kE6lqBRgc=@vger.kernel.org X-Gm-Message-State: AOJu0YxuBzp6NJe64xPyFZUjaCzrIWZmFZdFcoTcTRIXE4gzsSeVFZBS wsppbjQOFyROTndcbsxjm3MS1k0tBMx1Q3urj0AkzIIxGy0aZaJiHPhDddwLov6OIBEIgDlGs8j UfMm/tl4OYDMFTjrMJuT1/xQI982wUGdPVczSG2PzBTul32ZlvxiNjPt2HILKTjVm8w14tceu2s c= X-Gm-Gg: ATEYQzyJvt1vFuU6DMfjBznQb10yv+6SqqaDIO6Lvx8uU3dhx8L+/gpq3ZN/ZqgxdT5 ZznNPsxG7t9Schg0NIygasaa5NebeP4x9YZCUXTKTWrjCHTTuKSbwphE6bfeiG2zkUt/X0bufys SMyKO7ju6Pd4/UIz++mk05vUCci8KrPhSut90KNhNm/U/8GiH+4POLKz7IbSFoOkOrqbqN0XExX s5yUUBbDsPX+A7Q4UYxZNgoVi6OTnB1kQg+4hvZgk2dHPMLCOcKX2r2PJabGrjdhPqYVqtxDFB3 RHLbTltJDy0Np9j1p4dcsCmSwYDxANJpN4/JxS3HroFc2LSc1mQ/Bdy3V2NFQPfwRhS0+xr0ztq ggCLzBAxmh32pkK2zGbOyNQPee3elttfm29T16KQ0PcKXwpoPBnC6KmgdoMR3j1zL/JOBKECdrw XnRbHAm12HJ1xtdEr6cOgAMbl3l1rBd7zy2lc= X-Received: by 2002:a05:622a:2c9:b0:509:172f:bd5 with SMTP id d75a77b69052e-50b3739f59fmr22974191cf.4.1773971711869; Thu, 19 Mar 2026 18:55:11 -0700 (PDT) X-Received: by 2002:a05:622a:2c9:b0:509:172f:bd5 with SMTP id d75a77b69052e-50b3739f59fmr22973831cf.4.1773971711369; Thu, 19 Mar 2026 18:55:11 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:09 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:46 +0200 Subject: [PATCH v9 06/11] media: qcom: iris: move get_instance to iris_hfi_sys_ops Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-6-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=9259; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=mN2B8mMErlly0rhOY6EnYewAknm6tdZRVcCuF6xiQiQ=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjlV5cEIj/b45jjRTfOXH0aOfIFDW+UqC7HM KI2/OoSMeSJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5QAKCRCLPIo+Aiko 1QOVB/9toPdsDlmGwV4AN2A69C4k3fTHZWsBUdoQgHzmEVA+a0/GjHv54lFeoxuLO6I8jdJ4KDl mXDFatCyrYwffGmp+eG2xOknRZGDrUKxZB3gjuT8V/v9zXqc11kvVqF+4OQUDTdVnuMN1wq7KvD WQrxxgE1Lv2IQBWyPOj0xPd7b12wf8YH1oBLHyhcrRCLV2mjGRcbU2/+lZQ7Z6iNbBJYWj9l1lT 5VNFCxbrpMRwzWSr+yoDoC6nZwExYgVzrR1X9YxdsgUKyajRcaW6L8XVj/WXZyLxK05lxw99a8B qiuc3g/JmEYk2YV1rt6JUm6aCyzMWv72BH3hbgWgB7m5hJGi X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-ORIG-GUID: 5_4byB9wrUXHkCyYbDzSZVgqbRzYm5c6 X-Proofpoint-GUID: 5_4byB9wrUXHkCyYbDzSZVgqbRzYm5c6 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfXzbBpoD/sRBOP Y+GWKXzvE+b9SnyAwbJ1jPmVZIvWQoZEcX3sRM7nXG2pnSDBFjTghCJoPAOrgWdTil5adZPLwiK SuogZvGTCJ5WSs66yz5qhDNcVbXBSPsClbv5iWzsy7dk3LWwZwOvGfEIKRqKrV/g+Ye+1PM1lXR mpYlMTkYyQqepeROiGRbQdCl4YKrkE76ZcXmAgkDdXgGtnsNDMuElw7LJZs1K/lPwTtr3hxARD+ wSh8b/wFXqTKU07ZfEPezj84nldhSmWuus5gsg6zrvsZ6yCcNzAta/V+Wp/lAL/5XxvT528UoCK 6qH7X5zYmc7ZvlFTPnm2x32YGbSHevbYQaKMaSSXHV96p9G36Gqv1WJPfQ14ooqgr/oVtA2Q6ZM L1+adBniOmJPdGcZDlmWBrcqT6ehOWD17D0GKnO2x4BWSRPMCUw+eifTvAb6CuUZ07FHTpLQyVY XhMOzqnmnojUXoooziA== X-Authority-Analysis: v=2.4 cv=fdGgCkQF c=1 sm=1 tr=0 ts=69bca901 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=2oeCRJBNelE_HTcD8YQA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 impostorscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 bulkscore=0 priorityscore=1501 malwarescore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 The get_instance() is a callback tightly connected to the HFI implementation. Move it into the new iris_hfi_sys_ops structure, merging all core callbacks into a single vtable. Reviewed-by: Dikshita Agarwal Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_hfi_common.h | 2 ++ drivers/media/platform/qcom/iris/iris_hfi_gen1.h | 2 -- .../platform/qcom/iris/iris_hfi_gen1_command.c | 28 ++++++++++--------= -- drivers/media/platform/qcom/iris/iris_hfi_gen2.h | 1 - .../platform/qcom/iris/iris_hfi_gen2_command.c | 30 ++++++++++++------= ---- .../platform/qcom/iris/iris_platform_common.h | 1 - .../media/platform/qcom/iris/iris_platform_gen1.c | 2 -- .../media/platform/qcom/iris/iris_platform_gen2.c | 4 --- drivers/media/platform/qcom/iris/iris_vidc.c | 2 +- 9 files changed, 34 insertions(+), 38 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_hfi_common.h b/drivers/m= edia/platform/qcom/iris/iris_hfi_common.h index 9aa84a1d8f95..a27447eb2519 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_common.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_common.h @@ -112,6 +112,8 @@ struct iris_hfi_sys_ops { int (*sys_pc_prep)(struct iris_core *core); =20 void (*sys_hfi_response_handler)(struct iris_core *core); + + struct iris_inst *(*sys_get_instance)(void); }; =20 struct iris_hfi_session_ops { diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen1.h index 38e9d262d7df..c37adf65055a 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.h @@ -7,10 +7,8 @@ #define __IRIS_HFI_GEN1_H__ =20 struct iris_core; -struct iris_inst; =20 void iris_hfi_gen1_sys_ops_init(struct iris_core *core); void iris_hfi_gen1_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen1_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index 26b7feb05d15..0017ade4adbd 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1076,6 +1076,19 @@ static const struct iris_hfi_session_ops iris_hfi_ge= n1_session_ops =3D { .session_close =3D iris_hfi_gen1_session_close, }; =20 +static struct iris_inst *iris_hfi_gen1_get_instance(void) +{ + struct iris_inst *out; + + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->hfi_session_ops =3D &iris_hfi_gen1_session_ops; + + return out; +} + static const struct iris_hfi_sys_ops iris_hfi_gen1_sys_ops =3D { .sys_init =3D iris_hfi_gen1_sys_init, .sys_image_version =3D iris_hfi_gen1_sys_image_version, @@ -1083,22 +1096,11 @@ static const struct iris_hfi_sys_ops iris_hfi_gen1_= sys_ops =3D { .sys_pc_prep =3D iris_hfi_gen1_sys_pc_prep, =20 .sys_hfi_response_handler =3D iris_hfi_gen1_response_handler, + + .sys_get_instance =3D iris_hfi_gen1_get_instance, }; =20 void iris_hfi_gen1_sys_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen1_sys_ops; } - -struct iris_inst *iris_hfi_gen1_get_instance(void) -{ - struct iris_inst *out; - - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->hfi_session_ops =3D &iris_hfi_gen1_session_ops; - - return out; -} diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h b/drivers/med= ia/platform/qcom/iris/iris_hfi_gen2.h index 6cc6d9890c12..21ab58e0aa84 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2.h +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.h @@ -36,6 +36,5 @@ struct iris_inst_hfi_gen2 { =20 void iris_hfi_gen2_sys_ops_init(struct iris_core *core); void iris_hfi_gen2_response_handler(struct iris_core *core); -struct iris_inst *iris_hfi_gen2_get_instance(void); =20 #endif diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 0c98d680bf09..639b75fca1ab 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -1315,6 +1315,20 @@ static const struct iris_hfi_session_ops iris_hfi_ge= n2_session_ops =3D { .session_close =3D iris_hfi_gen2_session_close, }; =20 +static struct iris_inst *iris_hfi_gen2_get_instance(void) +{ + struct iris_inst_hfi_gen2 *out; + + /* The allocation is intentionally larger than struct iris_inst. */ + out =3D kzalloc_obj(*out); + if (!out) + return NULL; + + out->inst.hfi_session_ops =3D &iris_hfi_gen2_session_ops; + + return &out->inst; +} + static const struct iris_hfi_sys_ops iris_hfi_gen2_sys_ops =3D { .sys_init =3D iris_hfi_gen2_sys_init, .sys_image_version =3D iris_hfi_gen2_sys_image_version, @@ -1322,23 +1336,11 @@ static const struct iris_hfi_sys_ops iris_hfi_gen2_= sys_ops =3D { .sys_pc_prep =3D iris_hfi_gen2_sys_pc_prep, =20 .sys_hfi_response_handler =3D iris_hfi_gen2_response_handler, + + .sys_get_instance =3D iris_hfi_gen2_get_instance, }; =20 void iris_hfi_gen2_sys_ops_init(struct iris_core *core) { core->hfi_sys_ops =3D &iris_hfi_gen2_sys_ops; } - -struct iris_inst *iris_hfi_gen2_get_instance(void) -{ - struct iris_inst_hfi_gen2 *out; - - /* The allocation is intentionally larger than struct iris_inst. */ - out =3D kzalloc_obj(*out); - if (!out) - return NULL; - - out->inst.hfi_session_ops =3D &iris_hfi_gen2_session_ops; - - return &out->inst; -} diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 6b76a9046f9a..d1daef2d874b 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -203,7 +203,6 @@ enum platform_pm_domain_type { =20 struct iris_platform_data { void (*init_hfi_ops)(struct iris_core *core); - struct iris_inst *(*get_instance)(void); u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); const struct vpu_ops *vpu_ops; const struct icc_info *icc_tbl; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index dc74da04771b..9925a893b404 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -333,7 +333,6 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { }; =20 const struct iris_platform_data sm8250_data =3D { - .get_instance =3D iris_hfi_gen1_get_instance, .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, @@ -385,7 +384,6 @@ const struct iris_platform_data sm8250_data =3D { }; =20 const struct iris_platform_data sc7280_data =3D { - .get_instance =3D iris_hfi_gen1_get_instance, .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 19e99e1c2aff..10a972f96cbe 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -907,7 +907,6 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { }; =20 const struct iris_platform_data sm8550_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, @@ -1006,7 +1005,6 @@ const struct iris_platform_data sm8550_data =3D { * - fwname to "qcom/vpu/vpu33_p4.mbn" */ const struct iris_platform_data sm8650_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, @@ -1100,7 +1098,6 @@ const struct iris_platform_data sm8650_data =3D { }; =20 const struct iris_platform_data sm8750_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, @@ -1196,7 +1193,6 @@ const struct iris_platform_data sm8750_data =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .get_instance =3D iris_hfi_gen2_get_instance, .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index 7e03d63578e1..ecd8a20fedbf 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -156,7 +156,7 @@ int iris_open(struct file *filp) =20 pm_runtime_put_sync(core->dev); =20 - inst =3D core->iris_platform_data->get_instance(); + inst =3D core->hfi_sys_ops->sys_get_instance(); if (!inst) return -ENOMEM; =20 --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 96890331203 for ; Fri, 20 Mar 2026 01:55:17 +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=1773971724; cv=none; b=XnhtQhldCO51+6XO9eQUC/1jK6rvhFgVAw3KIUgrCUcL0sldP7XBRJ+heXFlrRoVYziilafZC5ak/nPCgjZVJJH/D1fchXDyHqXkOqt8XrarBP3gvwSAIZplKuE1toyqEGXnLEvPE1maqBoInJdqNf/lM685fWMq8Vy32TQwX4o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971724; c=relaxed/simple; bh=DLPuVfir9AR4DkrGGeJ6rU44rq8n0HDVReP2foklRpA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Qi3fS/SVu2rMIbo/zdTPDEsFFyaSmoq1n4KH8S0ClUVpiyOHwkmnC3v6I2GWBIOyHoMFXPkAm2IQ/TYfFopLZe5h1os9aLq8Q9fcwAE6JidH1MZV+mTz4CfaiVyrD0b0NsG6ZPm9ywiRjVYchzB9vTm05wzeyDGWtNf0auiKZkE= 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=myWXW5of; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=BbOj/VeT; 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="myWXW5of"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="BbOj/VeT" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JMkRAm4147248 for ; Fri, 20 Mar 2026 01:55:17 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= hGrM0qdQy98OdoWRO2UICz6FzA8bjdWx+bdXo3Th8qM=; b=myWXW5ofCxv6SKOw ZWU0hvrjT7vgypm9fatDlvF8LnMacMdvENvbUr0zTHbhb7Wo2Q7MfflR5CrqP/Pn d552Z4nJ9fgn1HRBpF7VR6IXfLm7RHG/ErIcb9U52dVPEO93d/cxPL6bZlw43hve r0syO+R2ER/yJ6115QPD1nYdGfOzzr3m7ElhSPEk94W6QqicR6ERW3KteMm2/aDO BG0LERtZwwGlMvBQQX7fBTBq7D83mQIMCVEtaCWOKedk2XnWlA4CsnlFvCjSZPmD L0ShrUaFxg6qP/5i5XWrQqpPMgmS2S59LZD5gkDTGrUxOsClPeE/FkhxxbWfoNBR SNcRXg== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0t7urca1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:16 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-50917996cfaso99832701cf.0 for ; Thu, 19 Mar 2026 18:55:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971716; x=1774576516; 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=hGrM0qdQy98OdoWRO2UICz6FzA8bjdWx+bdXo3Th8qM=; b=BbOj/VeTLmRnsnkgzU4cv4BTrqWaEzG2gDEVRvsmZkKBhtHvXCLpo6Sd4EKf1Vqbh2 stiOhfhLLhYNRXiuCtf8ieuIzUhJIVOV6DJkMV8YsysootvXYg3sQtNCOsU8nt0j1TSi tufG9v2CnFhjcrpfdelWtU+SXF8i8qZsOUwzb0OuBBs2Mlk9JkTGN8W9kunsD7yziyFx YQRkiJiI3OMTYfma7mOBZFX0EsgetBi0sN76yWDLw0gxFAZlO3oy/zGWqQZ1KOVGDFZt p9qJN/Vi7rdg5gWz29ctAIKnIKbVAy0q2WEdJQbTpliU1CEPAnTrkQTDRZwv3utCnl2B Xt8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971716; x=1774576516; 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=hGrM0qdQy98OdoWRO2UICz6FzA8bjdWx+bdXo3Th8qM=; b=eF9Mc2A0OpBOpFzJzuDr0nA9n5tKCoYlR6CsmmSoKPBALOl/PmxfP7xFQZRSCzGl8r 6t80qWelibpwMWOqaFFe7wcsBzE3v83OwN+pyxFx8ADR2IFO+qYjziBe2U70pOxpZi+H Z6OqbUKegpOKPD3RcshQ77JkH4rq6S8Q/z4yQS0zZxJFvTb1A77utKPOuCkn2JpP+vXm ASjkTd2lcvSuYYP1y5RBjQEpmdipB4VXGa/m8rMh+PffUK7Jy+QVMNUqtJXTgmJ41Pqw UR+QVXZXsFbh6EDMYil2FceqQ4HOjlrJhMnF2FXyLp+NY3Y5HgcSHzIzKRdIhzuxuT/3 QzyQ== X-Forwarded-Encrypted: i=1; AJvYcCWQ0/JpVtTVm2c2S2XDsoTYBnqPNXwMVh6RhbwH1/kgqJpWBBQIA9gZcn3jSh2nTota0bgIXr3SS+2vUng=@vger.kernel.org X-Gm-Message-State: AOJu0YyeVZ+QNrsljIvdt5wOGvHQEg3igbinhyMxKbMAl6fjBv4gxM+2 7fAYdPZg1mMIHKw7tgzjWD5QsmvwvY2Bmsyb2VMCV1CDiBQqXLz1J5NJrODBqx2pim/7vhS5y8q JsY+eBZHfPnWjV+dZT7upj4hXZW/uoxs10vziZ2tiby4Zp29AmyvJ6HgNdMsNmFP4jbE= X-Gm-Gg: ATEYQzw2YkfUoCxI/pnw53L+e5MTfDqTNrWeQWcmT/mL+3/UimvoQlitV+UqgH/eRaE NUUKu0GHFssEmOPDoIeVRj+JngrdMjaWiVb5tCBWPR7F0oIFd68VI2e+CGookTrbFvare++3+rm 4lEr3uxRUkpUgsx76eMHyYenOatARXnlfHouh+69WjPpiEuSvCBJ/37rZz+W5NEoFU+HCiMg4mq PyeRtCFris/iqGcMmPLuDQD4eoS5juqfGVKW5X31UMrg4cndijHQapSsHcvZSi7aDh/1MhLZ7iO y+wuoy27Uu4ParRkGLFsycu1OyruvqWUEa4p9C24gtAZOikBUEWFTWbrgy3bbrAgFdmgg3LyBf6 FbUknJK4SPAdOwnzeTdWWG+fswbMppAj5o7JSiGMph+ZcsDtLEGexn3D4d6fF4HTbPu/chKgSGz Vs3wpi7aCTpy/paEyyRJWblPCBxkL98MyweOg= X-Received: by 2002:a05:622a:154:b0:509:59c:578e with SMTP id d75a77b69052e-50b373d34a5mr23525801cf.16.1773971715672; Thu, 19 Mar 2026 18:55:15 -0700 (PDT) X-Received: by 2002:a05:622a:154:b0:509:59c:578e with SMTP id d75a77b69052e-50b373d34a5mr23525661cf.16.1773971715264; Thu, 19 Mar 2026 18:55:15 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:12 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:47 +0200 Subject: [PATCH v9 07/11] media: qcom: iris: drop hw_response_timeout_val from platform data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-7-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=5752; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=DLPuVfir9AR4DkrGGeJ6rU44rq8n0HDVReP2foklRpA=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjlD4Z/i5GEUnbPWpaTQrCRMTPfyqNAl150U 9k23v3XBaWJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5QAKCRCLPIo+Aiko 1V4DB/96QTWpnDcU/lQjj8l0QrJNXYv7ByPxZyp33g9KAef1kD1etIDp+psktmLaN6Y1o3PoSwm MWxbFa0DxCA3QM4EuAIXgORqje+7pKfRL8Cz13lE0T7HcfSx3ow1R06mWCk3iHj2NsaXx4A4eYM KbLn3qA/tyuN2jLMEr0s9f8o9michR6J8cAnajDVLODiylcyKxFGJt2PfXtmBuzn+uJb1MU7fhW N4mXIhqezGoZLZkkwq2hFhfXuuSJpjyH/+HyZKptUDoK4qD/ErlTKs0TagwToAPBvQ6wTyGIfm/ RlJsG8pVdHb4Q9YC88wvEU299oxaQsmLb9iSLQ212X9b7C3b X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX79E5EtWxWhyh ivqFgXe29x08iO1Kxwda81xnbgxeQfHoXVIxDaF1wpTDNQy9581zJMXQwcXU0xmvzg44tCKx60M XYIPlXBzKE3rgVc15zKH9iMFMPE2g5XDT+lVmn6P/6eOvS6DuXDAPr2A8WobH+DvqD5svdg0N7z lsfAuB2fgbiUkG2zkZbHwcbQoPqFxDo4UyDrMVU83QVygOmhaDBNDrdVsI7+337Eq3CrOAiAeJs +ISOVicYZVZc+7hdRlIRj+mzdzgqtM5Lw5fG5KU7R+/gbJrlsiOGLrsliYOpJNpB7+7MrdpyzMj rx+ZpsNGciE4eLFcr4wbTHBOZ+hO2M71l0WBfIb0uoL5L2jqrLtwlsqg2rx/XC0EOKzr+hkGn3H Wyj/Zh0lOpvdWhuVR5oQ9PnWdGboqLwgH5jib9XDba1qgjoce8CxokfFlta3ZGmjYizPc8+LfPw gHkbgyGjKXim8q9XDqA== X-Proofpoint-ORIG-GUID: 6fG6K9ck79d8V0zX4Lew2TE3W1jdDpKr X-Proofpoint-GUID: 6fG6K9ck79d8V0zX4Lew2TE3W1jdDpKr X-Authority-Analysis: v=2.4 cv=c/OmgB9l c=1 sm=1 tr=0 ts=69bca904 cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=qqQcAvOoDgVuqrtd-OoA:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU: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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 impostorscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 The HW response time is a constant between platforms. Remove it from the iris_platform_data structure and use it directly. Suggested-by: Vikash Garodia Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_core.c | 3 +-- drivers/media/platform/qcom/iris/iris_platform_common.h | 1 - drivers/media/platform/qcom/iris/iris_platform_gen1.c | 2 -- drivers/media/platform/qcom/iris/iris_platform_gen2.c | 4 ---- drivers/media/platform/qcom/iris/iris_utils.c | 5 +---- 5 files changed, 2 insertions(+), 13 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_core.c b/drivers/media/p= latform/qcom/iris/iris_core.c index 8406c48d635b..e6141012cd3d 100644 --- a/drivers/media/platform/qcom/iris/iris_core.c +++ b/drivers/media/platform/qcom/iris/iris_core.c @@ -28,14 +28,13 @@ void iris_core_deinit(struct iris_core *core) =20 static int iris_wait_for_system_response(struct iris_core *core) { - u32 hw_response_timeout_val =3D core->iris_platform_data->hw_response_tim= eout; int ret; =20 if (core->state =3D=3D IRIS_CORE_ERROR) return -EIO; =20 ret =3D wait_for_completion_timeout(&core->core_init_done, - msecs_to_jiffies(hw_response_timeout_val)); + msecs_to_jiffies(HW_RESPONSE_TIMEOUT_VALUE)); if (!ret) { core->state =3D IRIS_CORE_ERROR; return -ETIMEDOUT; diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index d1daef2d874b..e8a219023aaa 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -232,7 +232,6 @@ struct iris_platform_data { const struct tz_cp_config *tz_cp_config_data; u32 tz_cp_config_data_size; u32 core_arch; - u32 hw_response_timeout; u32 num_vpp_pipe; bool no_aon; u32 max_session_count; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 9925a893b404..6ed4c4ae4056 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -361,7 +361,6 @@ const struct iris_platform_data sm8250_data =3D { .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, @@ -410,7 +409,6 @@ const struct iris_platform_data sc7280_data =3D { .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 1, .no_aon =3D true, .max_session_count =3D 16, diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index 10a972f96cbe..abe523db45c2 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -936,7 +936,6 @@ const struct iris_platform_data sm8550_data =3D { .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, @@ -1036,7 +1035,6 @@ const struct iris_platform_data sm8650_data =3D { .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, @@ -1127,7 +1125,6 @@ const struct iris_platform_data sm8750_data =3D { .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, @@ -1222,7 +1219,6 @@ const struct iris_platform_data qcs8300_data =3D { .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), .core_arch =3D VIDEO_ARCH_LX, - .hw_response_timeout =3D HW_RESPONSE_TIMEOUT_VALUE, .num_vpp_pipe =3D 2, .max_session_count =3D 16, .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, diff --git a/drivers/media/platform/qcom/iris/iris_utils.c b/drivers/media/= platform/qcom/iris/iris_utils.c index cfc5b576ec56..29b07d88507e 100644 --- a/drivers/media/platform/qcom/iris/iris_utils.c +++ b/drivers/media/platform/qcom/iris/iris_utils.c @@ -55,16 +55,13 @@ void iris_helper_buffers_done(struct iris_inst *inst, u= nsigned int type, =20 int iris_wait_for_session_response(struct iris_inst *inst, bool is_flush) { - struct iris_core *core =3D inst->core; - u32 hw_response_timeout_val; struct completion *done; int ret; =20 - hw_response_timeout_val =3D core->iris_platform_data->hw_response_timeout; done =3D is_flush ? &inst->flush_completion : &inst->completion; =20 mutex_unlock(&inst->lock); - ret =3D wait_for_completion_timeout(done, msecs_to_jiffies(hw_response_ti= meout_val)); + ret =3D wait_for_completion_timeout(done, msecs_to_jiffies(HW_RESPONSE_TI= MEOUT_VALUE)); mutex_lock(&inst->lock); if (!ret) { iris_inst_change_state(inst, IRIS_INST_ERROR); --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 ED897337BA1 for ; Fri, 20 Mar 2026 01:55:22 +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=1773971733; cv=none; b=oZoPc5elbZ4CT56A/q7J3On2WjUUsALBBZ66D+ncqHBxDt+7hYsk4oBQ+HbbeFOYM7tpUnlW+MCuqLzpOi9VnEltbJ+VP2aleAL2ZMwS+7K9Gb22kuG1l6Z5tkCR9R5henGPwQtvuoA0GvKTpxBh1Omf7r2DjIhIpS5FCW02KsU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971733; c=relaxed/simple; bh=Jtvgm+uJ7WJuydOup4E3JI1FhO/dbAe246kRdXOlqrM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Uc3IrTt/lXIGVso3Zad6y9Y72NttFh+iAiIGI6xN5ScECxjZxfskmDqdrk2kfO8u559beojZa7aqKwTys5RJXTcBnXhgy0bt6uADcyjIP2WQgoHZvq9bAOLWWoi+6CmmZA8Hx/S6ud8+7J2oFPESgTtu5DGBLFN5AiR8bEH82iY= 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=bae04akU; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=H4Fyndi8; 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="bae04akU"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="H4Fyndi8" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JM4KTc4171037 for ; Fri, 20 Mar 2026 01:55: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= v0BbRrfNHuagKFDNNaUybnvTESRt0a9rfgUWWhzwuHo=; b=bae04akUbLUZvsNv UYlFfiKycUm9JLs4r/7qpmM7sBWNbefDqxp1sM7s5feUFisw9Uw8Lu76tWH8cKiT 2xigSZiHSfqqbnp6WVelNLAxwTnUlRu08W2qa1OucdqU1/MD3+wqFkRgK+BcQ2sj Wcid5GlQO5qETQEYk9tun7cntNsUTQNWQ+gs7hMafCKD1YirGulZZO4aWbZW3fiW pjMaqcjfuOm6qpis03dUsCxbQDxCkEzzh28sHOlChziOSTzFf3kMWmSfOFfrQ+ps 3Jbs3b6hCeSvoSolHgQE3l7KMfmOPSe1QD4k8vbhBsLblktvwoKC8LL4uR3lKIYG p4Wxrw== Received: from mail-qt1-f200.google.com (mail-qt1-f200.google.com [209.85.160.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0sm6gg0f-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:21 +0000 (GMT) Received: by mail-qt1-f200.google.com with SMTP id d75a77b69052e-50b3544bc7bso10594291cf.2 for ; Thu, 19 Mar 2026 18:55:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971721; x=1774576521; 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=v0BbRrfNHuagKFDNNaUybnvTESRt0a9rfgUWWhzwuHo=; b=H4Fyndi8/+m3NB0eC/CWL1mDCVWCltJCI32xEGSS3vWte8IMfLHMNvRjplZV6HJNy4 gGIAgzc9ZrpRbdNGhXuLqONaGxOyCDOiAHYLaBvrci9nLgXy7ivXoGsBo5yCchDkh6tg pfJBpYW8qUGE26SLJVZkolS60vABdMNy7GVmbhecK/lAxJgpVvljR0KAS1gzQ5T2Lotw 6lyN0d/IpCj6TP6IT9z+9+XKq+9NoUKtzGm97bGW2Qt7p52qa7tlMPQBmTnWeurBn8zh sacfJ+gOfCU2UZ5o/vLePkrQkAs9TuPqrhvXBGG+269G38afC42wHWM0HDj4oWiSioRS nzkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971721; x=1774576521; 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=v0BbRrfNHuagKFDNNaUybnvTESRt0a9rfgUWWhzwuHo=; b=SIO/9fs7sLdzhsEMMDECstdmvGLXvvaMngFVef68A9HdVYqc8YH3OEXB77j3wHp6px R7AtcxEG6pi3Vvq7Y/ge7nMa+gX1G69hDY0wublTxvDGalogsenk16aOQ3nHh8y+fG0h siD50ORaaRna2wz+Qcl5muLOQs1uYyoFb3/Rp75tOlBOwfkeMgXxp3K/BsiEsHcR7knv /bqrMYakahwIyVreNzVmaS4ASVNcgq4SSzzPaAdewJwFCBWUuSIsa8NiIiymBjbdzBeq 2WAHMiTJJDbDjhw3SbobpLLl/41X7G+z3lNr+WQFlBuRfd1eYls16hR3R7Yj6Nys/aT9 ce4A== X-Forwarded-Encrypted: i=1; AJvYcCXRxeJFQ2Z2LzTBW+RQwUhZ94kjeyURCdpt+7qsjCBkDSMhFp+NGW4F3q2Iq8bj/XFrUHWgwgjy14VSagQ=@vger.kernel.org X-Gm-Message-State: AOJu0YywAZzLuXD1pAmgJFZ4dtS3JZgatVgFWjyeOKc5iHY2j2TCv0ZL D4h6TT18kRPnHK0qPmAPFZylSuzgTqarJeILwrVNmPApwsDVucdH8tb6n1sySojE0vY9KUAKsgu MhgLSbuHvdBxakh0KAx11x337regblTOvdDPU9JbHmdIE+YNbl8TgANOIcVfXVlh/3lw= X-Gm-Gg: ATEYQzxQytyHlvnw3iiZGr3174XjJjhmPLIQknfxQK4DQH29AiCqYahRGb83X3TPsie 8vC0agtZhvxpJCMIhRkKDvJmOgxrRWPZTiw4CD2GX8rLJI1OVXe6EhAyLLpq5nhSG6KWs6NJvvK Fhg0ksepRPg5msK4BS7I3sn7AkKPPVVuSEXSD6tCV2C85KWeybrq1LMZA9AA9dy6oTkomrvUlsb wg8CkIZMDw4rfvkBuvRbtY0zPnYomuUK+4VnfJZK87n+pAsknO0Gzzk1JVI5tRou9jwSktUxVIi 2aQnwuoTbmoLUa6cD6E2cQ4kuW649kPzdSrDCxM0nMWvbo6XLPkXx15Pj/C8iBhIC/8G7A1Ef84 LOkl7QnFa9Hk0a3qw73Lx1fhzCjChqe420/wuqZkN4Q6wmGcYhTRmEJ+Wj1YE4TpVatSMPowQXM fKAfRBXYm+0m1tvwJCrX6bGIDRJWwJ4OqtiF8= X-Received: by 2002:a05:622a:54e:b0:509:2d50:9794 with SMTP id d75a77b69052e-50b374f4093mr21905481cf.34.1773971719991; Thu, 19 Mar 2026 18:55:19 -0700 (PDT) X-Received: by 2002:a05:622a:54e:b0:509:2d50:9794 with SMTP id d75a77b69052e-50b374f4093mr21905231cf.34.1773971719290; Thu, 19 Mar 2026 18:55: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-5a285305eefsm232344e87.70.2026.03.19.18.55.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:16 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:48 +0200 Subject: [PATCH v9 08/11] media: qcom: iris: split firmware_data from raw platform data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-8-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=45596; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=Jtvgm+uJ7WJuydOup4E3JI1FhO/dbAe246kRdXOlqrM=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjmiPc+XStfQftkw8g8DZLrAgP3tnlR77n3k nXFlF00nBiJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5gAKCRCLPIo+Aiko 1WIaCACYsiPqqWvyZwGADiLphA2+zSSkbJMXBI08erUEwsBo2pju2+jktJomwHp4In8CZ6d7Eoi oJ+zPgLqfReKu/24zrRV0w+P+NEGpHCt2j9ow9WCWOv1KorWpMHEL+lW2NpSy5OAgny1FtL4I0e e7bsbHwlMGAlwlM8b7jmR+pmAl3huxZtKC2quf+RU1HGPqY68l6pdBA334q7bvi4yrmxabiI04c 30zEITgq5Iu5DgqhhS/PE5miXmfYnJJBBTQrPXZM4nUMXcxiqvJrtNfcYuJXws4AeSu3b5PTUON ovFTJ/9Nn1tbfkX4rrgfUp8f3YwY//j0bkkK1iLD37RK3OFr X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: p0-g0DiI4Rk8aiHTaHZhJIOXAfcM7Fj7 X-Authority-Analysis: v=2.4 cv=Rv/I7SmK c=1 sm=1 tr=0 ts=69bca90a cx=c_pps a=JbAStetqSzwMeJznSMzCyw==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=coRdw7kJwGx05Zhg8iIA:9 a=QEXdDO2ut3YA:10 a=uxP6HrT_eTzRwkO_Te1X:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfXysrA29MsYO8N RKF8dhkeYCCXhuzm7V41Lravx7n3QNmhjvZOVgpiTyrDZAENPWuRPly9nNwrIKBq3aKTjiEMWeV vbObM+WmaFjC6rmV9A6HXhgAtrlFBmNql+T1gTYeDPd162+8ajLQjYfddWIRW9Db/GET8lSlVph m4OpOpD+4VaASNIwZL2L23fF9jcA4LOzR9/IDTjLEGElhcp7Iqqdw/WimSEm6R1Pk+LzAF5OIyg cx9lhurgurVrcsiNwFaHstvmKTOhAx1boUc3n6TvakWyBAIF75mNKEQ5X6ze+0ocpthGh/YyPd/ TZ93LlFBihGRi9mGT40UEWjXcpWGIxAVUzttH2hI9G5+70G44BsrxKB/NRhNeOabAQ9mFJ9ANbg 6n/FBzgKp062hctiJNQs43Ro+OE0sv3p8EIwgNfE5x6DoFPGWeP3OSpo1i6wIfQjE8RA+Nt0vhf RzqSGXwH8/fpv6u/oAg== X-Proofpoint-ORIG-GUID: p0-g0DiI4Rk8aiHTaHZhJIOXAfcM7Fj7 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 spamscore=0 phishscore=0 bulkscore=0 impostorscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 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 | 82 +++---- drivers/media/platform/qcom/iris/iris_core.h | 2 + drivers/media/platform/qcom/iris/iris_ctrls.c | 8 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 8 +- .../platform/qcom/iris/iris_hfi_gen2_command.c | 66 +++--- .../platform/qcom/iris/iris_platform_common.h | 81 ++++--- .../media/platform/qcom/iris/iris_platform_gen1.c | 67 +++--- .../media/platform/qcom/iris/iris_platform_gen2.c | 248 ++++-------------= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- drivers/media/platform/qcom/iris/iris_vidc.c | 10 +- drivers/media/platform/qcom/iris/iris_vpu_common.c | 2 +- 11 files changed, 206 insertions(+), 371 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index f55b7c608116..fbe136360aa1 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -301,31 +301,31 @@ static void iris_fill_internal_buf_info(struct iris_i= nst *inst, =20 void iris_get_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; for (i =3D 0; i < internal_buffer_count; i++) iris_fill_internal_buf_info(inst, internal_buf_type[i]); } @@ -366,7 +366,7 @@ static int iris_create_internal_buffer(struct iris_inst= *inst, =20 int iris_create_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; u32 internal_buffer_count, i, j; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -374,19 +374,19 @@ int iris_create_internal_buffers(struct iris_inst *in= st, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -442,7 +442,7 @@ int iris_queue_internal_deferred_buffers(struct iris_in= st *inst, enum iris_buffe =20 int iris_queue_internal_buffers(struct iris_inst *inst, u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buffer, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -451,19 +451,19 @@ int iris_queue_internal_buffers(struct iris_inst *ins= t, u32 plane) =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -501,7 +501,7 @@ int iris_destroy_internal_buffer(struct iris_inst *inst= , struct iris_buffer *buf =20 static int iris_destroy_internal_buffers(struct iris_inst *inst, u32 plane= , bool force) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buf, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -510,19 +510,19 @@ static int iris_destroy_internal_buffers(struct iris_= inst *inst, u32 plane, bool =20 if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - len =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + len =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - len =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + len =3D firmware_data->dec_op_int_buf_tbl_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - len =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + len =3D firmware_data->enc_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_op_int_buf_tbl; - len =3D platform_data->enc_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_op_int_buf_tbl; + len =3D firmware_data->enc_op_int_buf_tbl_size; } } =20 @@ -593,17 +593,17 @@ static int iris_release_internal_buffers(struct iris_= inst *inst, =20 static int iris_release_input_internal_buffers(struct iris_inst *inst) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; const u32 *internal_buf_type; u32 internal_buffer_count, i; int ret; =20 if (inst->domain =3D=3D DECODER) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->enc_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->enc_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->enc_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->enc_ip_int_buf_tbl_size; } =20 for (i =3D 0; i < internal_buffer_count; i++) { diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index 1592681640ab..e0ca245c8c63 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -54,6 +54,7 @@ struct qcom_ubwc_cfg_data; * @resets: table of iris reset clocks * @controller_resets: table of controller reset clocks * @iris_platform_data: a structure for platform data + * @iris_firmware_data: a pointer to the firmware (or HFI) specific data * @ubwc_cfg: UBWC configuration for the platform * @state: current state of core * @iface_q_table_daddr: device address for interface queue table memory @@ -97,6 +98,7 @@ struct iris_core { struct reset_control_bulk_data *resets; struct reset_control_bulk_data *controller_resets; const struct iris_platform_data *iris_platform_data; + const struct iris_firmware_data *iris_firmware_data; const struct qcom_ubwc_cfg_data *ubwc_cfg; enum iris_core_state state; dma_addr_t iface_q_table_daddr; diff --git a/drivers/media/platform/qcom/iris/iris_ctrls.c b/drivers/media/= platform/qcom/iris/iris_ctrls.c index 5a24aa869b2d..ef7adac3764d 100644 --- a/drivers/media/platform/qcom/iris/iris_ctrls.c +++ b/drivers/media/platform/qcom/iris/iris_ctrls.c @@ -332,8 +332,8 @@ void iris_session_init_caps(struct iris_core *core) const struct platform_inst_fw_cap *caps; u32 i, num_cap, cap_id; =20 - caps =3D core->iris_platform_data->inst_fw_caps_dec; - num_cap =3D core->iris_platform_data->inst_fw_caps_dec_size; + caps =3D core->iris_firmware_data->inst_fw_caps_dec; + num_cap =3D core->iris_firmware_data->inst_fw_caps_dec_size; =20 for (i =3D 0; i < num_cap; i++) { cap_id =3D caps[i].cap_id; @@ -360,8 +360,8 @@ void iris_session_init_caps(struct iris_core *core) } } =20 - caps =3D core->iris_platform_data->inst_fw_caps_enc; - num_cap =3D core->iris_platform_data->inst_fw_caps_enc_size; + caps =3D core->iris_firmware_data->inst_fw_caps_enc; + num_cap =3D core->iris_firmware_data->inst_fw_caps_enc_size; =20 for (i =3D 0; i < num_cap; i++) { cap_id =3D caps[i].cap_id; diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index 0017ade4adbd..3fb90a466a64 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -1033,8 +1033,8 @@ static int iris_hfi_gen1_session_set_config_params(st= ruct iris_inst *inst, u32 p }; =20 if (inst->domain =3D=3D DECODER) { - config_params =3D core->iris_platform_data->dec_input_config_params_defa= ult; - config_params_size =3D core->iris_platform_data->dec_input_config_params= _default_size; + config_params =3D core->iris_firmware_data->dec_input_config_params_defa= ult; + config_params_size =3D core->iris_firmware_data->dec_input_config_params= _default_size; if (V4L2_TYPE_IS_OUTPUT(plane)) { handler =3D vdec_prop_type_handle_inp_arr; handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_inp_arr); @@ -1043,8 +1043,8 @@ static int iris_hfi_gen1_session_set_config_params(st= ruct iris_inst *inst, u32 p handler_size =3D ARRAY_SIZE(vdec_prop_type_handle_out_arr); } } else { - config_params =3D core->iris_platform_data->enc_input_config_params; - config_params_size =3D core->iris_platform_data->enc_input_config_params= _size; + config_params =3D core->iris_firmware_data->enc_input_config_params; + config_params_size =3D core->iris_firmware_data->enc_input_config_params= _size; handler =3D venc_prop_type_handle_inp_arr; handler_size =3D ARRAY_SIZE(venc_prop_type_handle_inp_arr); } diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen2_command.c index 639b75fca1ab..c90b22a75bc5 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2_command.c @@ -601,7 +601,7 @@ static int iris_hfi_gen2_set_super_block(struct iris_in= st *inst, u32 plane) =20 static int iris_hfi_gen2_session_set_config_params(struct iris_inst *inst,= u32 plane) { - const struct iris_platform_data *pdata =3D inst->core->iris_platform_data; + const struct iris_firmware_data *fdata =3D inst->core->iris_firmware_data; u32 config_params_size =3D 0, i, j; const u32 *config_params =3D NULL; int ret; @@ -630,31 +630,31 @@ static int iris_hfi_gen2_session_set_config_params(st= ruct iris_inst *inst, u32 p if (inst->domain =3D=3D DECODER) { if (V4L2_TYPE_IS_OUTPUT(plane)) { if (inst->codec =3D=3D V4L2_PIX_FMT_H264) { - config_params =3D pdata->dec_input_config_params_default; - config_params_size =3D pdata->dec_input_config_params_default_size; + config_params =3D fdata->dec_input_config_params_default; + config_params_size =3D fdata->dec_input_config_params_default_size; } else if (inst->codec =3D=3D V4L2_PIX_FMT_HEVC) { - config_params =3D pdata->dec_input_config_params_hevc; - config_params_size =3D pdata->dec_input_config_params_hevc_size; + config_params =3D fdata->dec_input_config_params_hevc; + config_params_size =3D fdata->dec_input_config_params_hevc_size; } else if (inst->codec =3D=3D V4L2_PIX_FMT_VP9) { - config_params =3D pdata->dec_input_config_params_vp9; - config_params_size =3D pdata->dec_input_config_params_vp9_size; + config_params =3D fdata->dec_input_config_params_vp9; + config_params_size =3D fdata->dec_input_config_params_vp9_size; } else if (inst->codec =3D=3D V4L2_PIX_FMT_AV1) { - config_params =3D pdata->dec_input_config_params_av1; - config_params_size =3D pdata->dec_input_config_params_av1_size; + config_params =3D fdata->dec_input_config_params_av1; + config_params_size =3D fdata->dec_input_config_params_av1_size; } else { return -EINVAL; } } else { - config_params =3D pdata->dec_output_config_params; - config_params_size =3D pdata->dec_output_config_params_size; + config_params =3D fdata->dec_output_config_params; + config_params_size =3D fdata->dec_output_config_params_size; } } else { if (V4L2_TYPE_IS_OUTPUT(plane)) { - config_params =3D pdata->enc_input_config_params; - config_params_size =3D pdata->enc_input_config_params_size; + config_params =3D fdata->enc_input_config_params; + config_params_size =3D fdata->enc_input_config_params_size; } else { - config_params =3D pdata->enc_output_config_params; - config_params_size =3D pdata->enc_output_config_params_size; + config_params =3D fdata->enc_output_config_params; + config_params_size =3D fdata->enc_output_config_params_size; } } =20 @@ -849,24 +849,24 @@ static int iris_hfi_gen2_subscribe_change_param(struc= t iris_inst *inst, u32 plan =20 switch (inst->codec) { case V4L2_PIX_FMT_H264: - change_param =3D core->iris_platform_data->dec_input_config_params_defau= lt; + change_param =3D core->iris_firmware_data->dec_input_config_params_defau= lt; change_param_size =3D - core->iris_platform_data->dec_input_config_params_default_size; + core->iris_firmware_data->dec_input_config_params_default_size; break; case V4L2_PIX_FMT_HEVC: - change_param =3D core->iris_platform_data->dec_input_config_params_hevc; + change_param =3D core->iris_firmware_data->dec_input_config_params_hevc; change_param_size =3D - core->iris_platform_data->dec_input_config_params_hevc_size; + core->iris_firmware_data->dec_input_config_params_hevc_size; break; case V4L2_PIX_FMT_VP9: - change_param =3D core->iris_platform_data->dec_input_config_params_vp9; + change_param =3D core->iris_firmware_data->dec_input_config_params_vp9; change_param_size =3D - core->iris_platform_data->dec_input_config_params_vp9_size; + core->iris_firmware_data->dec_input_config_params_vp9_size; break; case V4L2_PIX_FMT_AV1: - change_param =3D core->iris_platform_data->dec_input_config_params_av1; + change_param =3D core->iris_firmware_data->dec_input_config_params_av1; change_param_size =3D - core->iris_platform_data->dec_input_config_params_av1_size; + core->iris_firmware_data->dec_input_config_params_av1_size; break; } =20 @@ -996,29 +996,29 @@ static int iris_hfi_gen2_subscribe_property(struct ir= is_inst *inst, u32 plane) return 0; =20 if (V4L2_TYPE_IS_OUTPUT(plane)) { - subscribe_prop_size =3D core->iris_platform_data->dec_input_prop_size; - subcribe_prop =3D core->iris_platform_data->dec_input_prop; + subscribe_prop_size =3D core->iris_firmware_data->dec_input_prop_size; + subcribe_prop =3D core->iris_firmware_data->dec_input_prop; } else { switch (inst->codec) { case V4L2_PIX_FMT_H264: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_avc; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_avc; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_avc_size; + core->iris_firmware_data->dec_output_prop_avc_size; break; case V4L2_PIX_FMT_HEVC: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_hevc; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_hevc; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_hevc_size; + core->iris_firmware_data->dec_output_prop_hevc_size; break; case V4L2_PIX_FMT_VP9: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_vp9; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_vp9; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_vp9_size; + core->iris_firmware_data->dec_output_prop_vp9_size; break; case V4L2_PIX_FMT_AV1: - subcribe_prop =3D core->iris_platform_data->dec_output_prop_av1; + subcribe_prop =3D core->iris_firmware_data->dec_output_prop_av1; subscribe_prop_size =3D - core->iris_platform_data->dec_output_prop_av1_size; + core->iris_firmware_data->dec_output_prop_av1_size; break; } } diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index e8a219023aaa..5af6d9f49f01 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -201,44 +201,16 @@ enum platform_pm_domain_type { IRIS_APV_HW_POWER_DOMAIN, }; =20 -struct iris_platform_data { +struct iris_firmware_data { void (*init_hfi_ops)(struct iris_core *core); - u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); - const struct vpu_ops *vpu_ops; - const struct icc_info *icc_tbl; - unsigned int icc_tbl_size; - const struct bw_info *bw_tbl_dec; - unsigned int bw_tbl_dec_size; - const char * const *pmdomain_tbl; - unsigned int pmdomain_tbl_size; - const char * const *opp_pd_tbl; - unsigned int opp_pd_tbl_size; - const struct platform_clk_data *clk_tbl; - const char * const *opp_clk_tbl; - unsigned int clk_tbl_size; - const char * const *clk_rst_tbl; - unsigned int clk_rst_tbl_size; - const char * const *controller_rst_tbl; - unsigned int controller_rst_tbl_size; - u64 dma_mask; - const char *fwname; - struct iris_fmt *inst_iris_fmts; - u32 inst_iris_fmts_size; - struct platform_inst_caps *inst_caps; + + u32 core_arch; + const struct platform_inst_fw_cap *inst_fw_caps_dec; u32 inst_fw_caps_dec_size; const struct platform_inst_fw_cap *inst_fw_caps_enc; u32 inst_fw_caps_enc_size; - const struct tz_cp_config *tz_cp_config_data; - u32 tz_cp_config_data_size; - u32 core_arch; - u32 num_vpp_pipe; - bool no_aon; - u32 max_session_count; - /* max number of macroblocks per frame supported */ - u32 max_core_mbpf; - /* max number of macroblocks per second supported */ - u32 max_core_mbps; + const u32 *dec_input_config_params_default; unsigned int dec_input_config_params_default_size; const u32 *dec_input_config_params_hevc; @@ -253,6 +225,7 @@ struct iris_platform_data { unsigned int enc_input_config_params_size; const u32 *enc_output_config_params; unsigned int enc_output_config_params_size; + const u32 *dec_input_prop; unsigned int dec_input_prop_size; const u32 *dec_output_prop_avc; @@ -263,6 +236,7 @@ struct iris_platform_data { unsigned int dec_output_prop_vp9_size; const u32 *dec_output_prop_av1; unsigned int dec_output_prop_av1_size; + const u32 *dec_ip_int_buf_tbl; unsigned int dec_ip_int_buf_tbl_size; const u32 *dec_op_int_buf_tbl; @@ -273,4 +247,45 @@ struct iris_platform_data { unsigned int enc_op_int_buf_tbl_size; }; =20 +struct iris_platform_data { + /* + * XXX: remove firmware_data pointer and consider moving + * get_vpu_buffer_size pointer once we have platforms supporting both + * firmware kinds. + */ + const struct iris_firmware_data *firmware_data; + u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + + const struct vpu_ops *vpu_ops; + const struct icc_info *icc_tbl; + unsigned int icc_tbl_size; + const struct bw_info *bw_tbl_dec; + unsigned int bw_tbl_dec_size; + const char * const *pmdomain_tbl; + unsigned int pmdomain_tbl_size; + const char * const *opp_pd_tbl; + unsigned int opp_pd_tbl_size; + const struct platform_clk_data *clk_tbl; + const char * const *opp_clk_tbl; + unsigned int clk_tbl_size; + const char * const *clk_rst_tbl; + unsigned int clk_rst_tbl_size; + const char * const *controller_rst_tbl; + unsigned int controller_rst_tbl_size; + u64 dma_mask; + const char *fwname; + struct iris_fmt *inst_iris_fmts; + u32 inst_iris_fmts_size; + struct platform_inst_caps *inst_caps; + const struct tz_cp_config *tz_cp_config_data; + u32 tz_cp_config_data_size; + u32 num_vpp_pipe; + bool no_aon; + u32 max_session_count; + /* max number of macroblocks per frame supported */ + u32 max_core_mbpf; + /* max number of macroblocks per second supported */ + u32 max_core_mbps; +}; + #endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_platform_gen1.c index 6ed4c4ae4056..8875f90d487e 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen1.c @@ -332,8 +332,33 @@ static const u32 sm8250_enc_ip_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8250_data =3D { +const struct iris_firmware_data iris_hfi_gen1_data =3D { .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, + + .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, + .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), + .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, + .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), + + .dec_input_config_params_default =3D + sm8250_vdec_input_config_param_default, + .dec_input_config_params_default_size =3D + ARRAY_SIZE(sm8250_vdec_input_config_param_default), + .enc_input_config_params =3D sm8250_venc_input_config_param, + .enc_input_config_params_size =3D + ARRAY_SIZE(sm8250_venc_input_config_param), + + .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, + .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), + .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, + .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), + + .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, + .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), +}; + +const struct iris_platform_data sm8250_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -355,35 +380,16 @@ const struct iris_platform_data sm8250_data =3D { .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, - .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8250_vdec_input_config_param_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8250_vdec_input_config_param_default), - .enc_input_config_params =3D sm8250_venc_input_config_param, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8250_venc_input_config_param), - - .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; =20 const struct iris_platform_data sc7280_data =3D { - .init_hfi_ops =3D &iris_hfi_gen1_sys_ops_init, + .firmware_data =3D &iris_hfi_gen1_data, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D sm8250_icc_table, @@ -403,10 +409,6 @@ const struct iris_platform_data sc7280_data =3D { .inst_iris_fmts =3D platform_fmts_sm8250_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), .inst_caps =3D &platform_inst_cap_sm8250, - .inst_fw_caps_dec =3D inst_fw_cap_sm8250_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8250_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8250_enc), .tz_cp_config_data =3D tz_cp_config_sm8250, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), .num_vpp_pipe =3D 1, @@ -415,19 +417,4 @@ const struct iris_platform_data sc7280_data =3D { .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, /* max spec for SC7280 is 4096x2176@60fps */ .max_core_mbps =3D 4096 * 2176 / 256 * 60, - .dec_input_config_params_default =3D - sm8250_vdec_input_config_param_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8250_vdec_input_config_param_default), - .enc_input_config_params =3D sm8250_venc_input_config_param, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8250_venc_input_config_param), - - .dec_ip_int_buf_tbl =3D sm8250_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8250_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_platform_gen2.c index abe523db45c2..05fbab276100 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_gen2.c @@ -906,40 +906,16 @@ static const u32 sm8550_enc_op_int_buf_tbl[] =3D { BUF_SCRATCH_2, }; =20 -const struct iris_platform_data sm8550_data =3D { +const struct iris_firmware_data iris_hfi_gen2_data =3D { .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, + + .core_arch =3D VIDEO_ARCH_LX, + .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, + .dec_input_config_params_default =3D sm8550_vdec_input_config_params_default, .dec_input_config_params_default_size =3D @@ -996,6 +972,37 @@ const struct iris_platform_data sm8550_data =3D { .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D sm8550_icc_table, + .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D sm8550_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), + .pmdomain_tbl =3D sm8550_pmdomain_table, + .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), + .opp_pd_tbl =3D sm8550_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D sm8550_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", + .inst_iris_fmts =3D platform_fmts_sm8550_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_sm8550, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + /* * Shares most of SM8550 data except: * - vpu_ops to iris_vpu33_ops @@ -1004,7 +1011,7 @@ const struct iris_platform_data sm8550_data =3D { * - fwname to "qcom/vpu/vpu33_p4.mbn" */ const struct iris_platform_data sm8650_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D sm8550_icc_table, @@ -1028,75 +1035,16 @@ const struct iris_platform_data sm8650_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), - - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 const struct iris_platform_data sm8750_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu33_buf_size, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D sm8550_icc_table, @@ -1118,71 +1066,12 @@ const struct iris_platform_data sm8750_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_sm8550, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, .num_vpp_pipe =3D 4, .max_session_count =3D 16, .max_core_mbpf =3D NUM_MBS_8K * 2, .max_core_mbps =3D ((7680 * 4320) / 256) * 60, - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), - - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; =20 /* @@ -1190,7 +1079,7 @@ const struct iris_platform_data sm8750_data =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .init_hfi_ops =3D iris_hfi_gen2_sys_ops_init, + .firmware_data =3D &iris_hfi_gen2_data, .get_vpu_buffer_size =3D iris_vpu_buf_size, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D sm8550_icc_table, @@ -1212,69 +1101,10 @@ const struct iris_platform_data qcs8300_data =3D { .inst_iris_fmts =3D platform_fmts_sm8550_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), .inst_caps =3D &platform_inst_cap_qcs8300, - .inst_fw_caps_dec =3D inst_fw_cap_sm8550_dec, - .inst_fw_caps_dec_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_dec), - .inst_fw_caps_enc =3D inst_fw_cap_sm8550_enc, - .inst_fw_caps_enc_size =3D ARRAY_SIZE(inst_fw_cap_sm8550_enc), .tz_cp_config_data =3D tz_cp_config_sm8550, .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .core_arch =3D VIDEO_ARCH_LX, .num_vpp_pipe =3D 2, .max_session_count =3D 16, .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, .max_core_mbps =3D (((3840 * 2176) / 256) * 120), - .dec_input_config_params_default =3D - sm8550_vdec_input_config_params_default, - .dec_input_config_params_default_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_params_default), - .dec_input_config_params_hevc =3D - sm8550_vdec_input_config_param_hevc, - .dec_input_config_params_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_hevc), - .dec_input_config_params_vp9 =3D - sm8550_vdec_input_config_param_vp9, - .dec_input_config_params_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_vp9), - .dec_input_config_params_av1 =3D - sm8550_vdec_input_config_param_av1, - .dec_input_config_params_av1_size =3D - ARRAY_SIZE(sm8550_vdec_input_config_param_av1), - .dec_output_config_params =3D - sm8550_vdec_output_config_params, - .dec_output_config_params_size =3D - ARRAY_SIZE(sm8550_vdec_output_config_params), - - .enc_input_config_params =3D - sm8550_venc_input_config_params, - .enc_input_config_params_size =3D - ARRAY_SIZE(sm8550_venc_input_config_params), - .enc_output_config_params =3D - sm8550_venc_output_config_params, - .enc_output_config_params_size =3D - ARRAY_SIZE(sm8550_venc_output_config_params), - - .dec_input_prop =3D sm8550_vdec_subscribe_input_properties, - .dec_input_prop_size =3D ARRAY_SIZE(sm8550_vdec_subscribe_input_propertie= s), - .dec_output_prop_avc =3D sm8550_vdec_subscribe_output_properties_avc, - .dec_output_prop_avc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_avc), - .dec_output_prop_hevc =3D sm8550_vdec_subscribe_output_properties_hevc, - .dec_output_prop_hevc_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_hevc), - .dec_output_prop_vp9 =3D sm8550_vdec_subscribe_output_properties_vp9, - .dec_output_prop_vp9_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_vp9), - .dec_output_prop_av1 =3D sm8550_vdec_subscribe_output_properties_av1, - .dec_output_prop_av1_size =3D - ARRAY_SIZE(sm8550_vdec_subscribe_output_properties_av1), - - .dec_ip_int_buf_tbl =3D sm8550_dec_ip_int_buf_tbl, - .dec_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_ip_int_buf_tbl), - .dec_op_int_buf_tbl =3D sm8550_dec_op_int_buf_tbl, - .dec_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_dec_op_int_buf_tbl), - - .enc_ip_int_buf_tbl =3D sm8550_enc_ip_int_buf_tbl, - .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_ip_int_buf_tbl), - .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, - .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index fa561f6a736c..dd87504c2e67 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -251,6 +251,7 @@ static int iris_probe(struct platform_device *pdev) return core->irq; =20 core->iris_platform_data =3D of_device_get_match_data(core->dev); + core->iris_firmware_data =3D core->iris_platform_data->firmware_data; =20 core->ubwc_cfg =3D qcom_ubwc_config_get_data(); if (IS_ERR(core->ubwc_cfg)) @@ -264,7 +265,7 @@ static int iris_probe(struct platform_device *pdev) disable_irq_nosync(core->irq); =20 iris_init_ops(core); - core->iris_platform_data->init_hfi_ops(core); + core->iris_firmware_data->init_hfi_ops(core); =20 ret =3D iris_init_resources(core); if (ret) diff --git a/drivers/media/platform/qcom/iris/iris_vidc.c b/drivers/media/p= latform/qcom/iris/iris_vidc.c index ecd8a20fedbf..807c9a20b6ba 100644 --- a/drivers/media/platform/qcom/iris/iris_vidc.c +++ b/drivers/media/platform/qcom/iris/iris_vidc.c @@ -243,7 +243,7 @@ static void iris_session_close(struct iris_inst *inst) =20 static void iris_check_num_queued_internal_buffers(struct iris_inst *inst,= u32 plane) { - const struct iris_platform_data *platform_data =3D inst->core->iris_platf= orm_data; + const struct iris_firmware_data *firmware_data =3D inst->core->iris_firmw= are_data; struct iris_buffer *buf, *next; struct iris_buffers *buffers; const u32 *internal_buf_type; @@ -251,11 +251,11 @@ static void iris_check_num_queued_internal_buffers(st= ruct iris_inst *inst, u32 p u32 count =3D 0; =20 if (V4L2_TYPE_IS_OUTPUT(plane)) { - internal_buf_type =3D platform_data->dec_ip_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_ip_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_ip_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_ip_int_buf_tbl_size; } else { - internal_buf_type =3D platform_data->dec_op_int_buf_tbl; - internal_buffer_count =3D platform_data->dec_op_int_buf_tbl_size; + internal_buf_type =3D firmware_data->dec_op_int_buf_tbl; + internal_buffer_count =3D firmware_data->dec_op_int_buf_tbl_size; } =20 for (i =3D 0; i < internal_buffer_count; i++) { diff --git a/drivers/media/platform/qcom/iris/iris_vpu_common.c b/drivers/m= edia/platform/qcom/iris/iris_vpu_common.c index dbce5aeba06c..c6cfc1d9fd9e 100644 --- a/drivers/media/platform/qcom/iris/iris_vpu_common.c +++ b/drivers/media/platform/qcom/iris/iris_vpu_common.c @@ -63,7 +63,7 @@ static void iris_vpu_setup_ucregion_memory_map(struct iri= s_core *core) writel(QTBL_ENABLE, core->reg_base + QTBL_INFO); =20 if (core->sfr_daddr) { - value =3D (u32)core->sfr_daddr + core->iris_platform_data->core_arch; + value =3D (u32)core->sfr_daddr + core->iris_firmware_data->core_arch; writel(value, core->reg_base + SFR_ADDR); } =20 --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 46B15327BF8 for ; Fri, 20 Mar 2026 01:55:26 +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=1773971736; cv=none; b=L8TObhoAQ7WBbhFQ0bY2L0FhMt9RpAI60TzrSNMqHVPODxSsQzrQWrEm+EMS7NWWJgILVdGA/MG/8SbgRMH3j5R56vaU+7ZcN+bsoqDXFTVpqqAUhs/NLzFeVcJ/eiNsOTIKK175kxAzeHvaH7PAt4+D9S5sbKJERJgCU96ssBk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971736; c=relaxed/simple; bh=PmWzLXueV4vhYJKrg5q2ChUx9fZ6poNF1eOU/h21iBs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=TkOId1lfQHBzTcykOtzz5jDsx/WN3tbsgcQ6GxSaIjtjztBRh+AVKqfr99ZnQzy92thuGr6QArIVvd2Lx52V47n/dXK9/NSKQcPvwARY9NyahVF8aSIMqMPzQEnUTKsNDunf2rjMgdTNhSn+eRD+r2XuM5E6ufOza2wo2QnivFc= 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=J2zuoZsL; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=SB+oMoBW; 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="J2zuoZsL"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="SB+oMoBW" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62JKGOHf2773150 for ; Fri, 20 Mar 2026 01:55: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= M6RGSd6I/1zcWa38bTZ0CP+Armd0rXJMRwbAjpiU8DI=; b=J2zuoZsL1fAl1IjT Sb7gMFbX1wA9ORNnqCYKcgRVbvCnxb/J6xDMguF7pmB8ntXWiOyCSJ/bLfnvw3KZ KdEdQ4gxj+CrVYzr+k91myBV3xm2MQ9Li3eodpMEssXFuRWeyt7Ke0wkcscu6fqf zjR6yjQwNSef7HjwJOc3cZdIw3cWQkjD28ZCXDfwQ9Re67t3uYhN79Ooy4MtEN8D zmrFrlt18DPesjAg0rywhVVpmi7pKwnDEtL3Da46KeLS0dYM66c7Li4HSJff8ALZ 6/zLLQb2WVqtQv+1cP9rQrI1Y8gSk+bzPXKMYgv7yllcTXOHCWbsU52pcmTeBb++ a/1RIA== Received: from mail-qt1-f199.google.com (mail-qt1-f199.google.com [209.85.160.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0r1grq3u-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:24 +0000 (GMT) Received: by mail-qt1-f199.google.com with SMTP id d75a77b69052e-5090e08dcfcso111872651cf.0 for ; Thu, 19 Mar 2026 18:55:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971724; x=1774576524; 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=M6RGSd6I/1zcWa38bTZ0CP+Armd0rXJMRwbAjpiU8DI=; b=SB+oMoBWaIIForUdblRSoVyj98n0iAVoDsoPep3vU4pYO8JPlCHJWYQsV02YkLGsbu lQp4B0FEabb2eQSkQRiWVhefcIQimeyHAT4CoB9diob2SK/EkBiMdBLXMf2pGlAPDi6A QvVvpbdX6JPJSBxanOe3HM+Mb/FWAN3G8TVRueqUwgmffgLXY5AQ6GLJylXnSYFLy5oM l5bUZhs+HY24jjIQinr78dTE10xg0JvgPP3+eKsAwhJ4FUFg5dFdonoIVIlMt2/GdpJF DPl/qey4PaBLXDDBzKhAgYz0IXYB8VwLqQ/m0tPs9hwgTL/t5dVHJQOwpfUWhIhmWh48 ijVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971724; x=1774576524; 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=M6RGSd6I/1zcWa38bTZ0CP+Armd0rXJMRwbAjpiU8DI=; b=kgClXRbW25GShENdYHkeA+ynZsWL8nMulv8Rq5WcLnDAAEDtoF+sXGbKC/PtwFQB3O fRo2ffKuZRGyEbaMPlw5S/TEe7xc/dQ4O47s7furF5OEdLddxrDjnkHZjaH542beswmD oqAgCI8VYdzWqD2Pnurs6LAow0LXUYYfieNuJhwnW1x7SBZojFcpKTmIuuBwIvP5YPPp beTf2nuS3BPq7FshkX3Si+MxRsrdJLIn3lUrvNn9pdLSDDW1/5RbJ22pcgNI71OCXd58 e1D0/Na/TkGPpYR0OePUa4rJhEl7FaAlwA0wTMwbdCAmHejBJHXYbeN1SvRkCamPx4hP 5vsg== X-Forwarded-Encrypted: i=1; AJvYcCW6Jrbtpv2uMy8ovXdF40J4MIptFPsN2TCZkdS4UZgOD/MeU+xRjbl8iZj1yOqE59XzZZo5oxaqBkxWdZQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwMbl1U6PObqhCa/jRvneVm9wJLKKfARuGrvIDa0BgWjY+HUSw5 DXvs6+tp7WIzF+lExtKpeZfGo2zrr28ll+b4dP0iaYlPhMmB0RWRTZPeWb0Rq064YGqPfHu3yfE oKViQoMFoUmkJGl2hOw5bXgy91tHAsXvLevwE4hPyeQSRuEyGSAUB4EfkaCw5IUFWMjs= X-Gm-Gg: ATEYQzx/I8swwgSN0pcDHGhFYDTPFq4bOWSPEbOiXv7Eq5o7lmGOSNP2RJhrRfxPvFt oRRy/70dNBW+Gx+AotjBNrGsyVN++rYBkP3ooXDE5Yo61alVSDr2Vuymcrkq257IzoHsrF5or9q MdyiqARvXjjKNpTXJSXPFct2l4FMLmq7HFISTJ4XhZdynO16zoTEdiIPMMMHudB02/uaTU6Ht3Z olDnT5DemLdxkm7nT0xil6mNS91i7p+emcptugKwd5i1R1cat3R+VqGEJmcGnuczznmA52zOT/a Ef7VR0wBdh0fzBIeZ0I8V2LuCiUhyX95mC5Vm3OAa6iP1+Mx1E0vEg8bUnaCZ/C1dDUF98loQ+m m/tMV4ywNj7uF+ieMKlfbuwSQ/EJXHqM4gGtxls0WlipYnlE71Gp22+hLZPOdIXPVQFm9i4IGWL B8b1eeEEw0GgvXRBcOEIhWhLy2IubHEhu5gE4= X-Received: by 2002:ac8:5fcd:0:b0:509:34b8:a367 with SMTP id d75a77b69052e-50b3747ac9amr20168911cf.30.1773971723881; Thu, 19 Mar 2026 18:55:23 -0700 (PDT) X-Received: by 2002:ac8:5fcd:0:b0:509:34b8:a367 with SMTP id d75a77b69052e-50b3747ac9amr20168651cf.30.1773971723290; Thu, 19 Mar 2026 18:55: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-5a285305eefsm232344e87.70.2026.03.19.18.55.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:20 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:49 +0200 Subject: [PATCH v9 09/11] media: qcom: iris: split platform data from firmware data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-9-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=31752; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=PmWzLXueV4vhYJKrg5q2ChUx9fZ6poNF1eOU/h21iBs=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjmfYEtT4MgKz9VFEFmk0UJG1MW6jC+7vfBc CNYZMMMtK+JATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5gAKCRCLPIo+Aiko 1UXkB/9QHIuVQyVzH4/WY6LP2OFShGzlMW1x0S9YRxAZ2iAiBj0R5gwWr5aCvm2xL+cV9W5wE97 Fmu5GTrRgNCv5iON/1t5kY6bqWhjFMb3Jqeg+J+WD9FxAvDTKrY4S2hUfi/x0x7kr1+Iv5MHUvG GPJhix8PSeAsBnux8qeTToxGRJ3RRo3MaS6wEDVDnEwWAlYWYa6oeBwxptn/YP2cf+ThKuVFq2P O4YV6+nNKiTfqpecnv/HbmThdiPlYZUgwrsMGpyLXGvmM/QBciy+ZRopeOvlgH5N0usVKMXkmE+ hFdtnrLZ1biZ/iI4Tx5PNstPIvvUpGmh1NJvJUdhDAj8jl6i X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX9YEg3J9wtrNx 4LVLbCNpMuoCR/nnhUY09lzm0muEwKMJzCkXWBuePHTWukcAcY7knUnVbFjCIi8pm9G7WoAqivF ruoMYhyWg/HeGhCeofxQ7vYKCcbFEc475Tta9V8wEQ/1P4tCYJfk7ZeOJufpnGrX2gCE+R/Il9v +H4KHLxeI8YmRNqRtZQSPdmEunZ2uvUvKkTm0gvJqKIvKlX+nD/hCgGwMIWT8+MxAAsz+iquCjf RRj1ZZXPmpW4bh9q5sCTbABlBQHaJpfdimrkAUNXH2TLsivWK/4TQQJIFdRwQqXM7xhoMRmiy1S 3+LtFgHGivpQjP+HcIdtZGq7jUPQrrgUAQwoIs38wNEZZto5Tj4QdFMOvKJhy0qDHhBA1EqzSO4 WK6iIJ7YKRynh8HdmJtmD+AcUfUwKshlmH/mzV+6a5SMMsOlQqpXZNwFKxD6Ot252zWvewOsRLC jlvcz0Lf2jeuEsyW9hA== X-Proofpoint-GUID: MlryYsG0p2WDznztL2p0lxaYIK6A-pd2 X-Proofpoint-ORIG-GUID: MlryYsG0p2WDznztL2p0lxaYIK6A-pd2 X-Authority-Analysis: v=2.4 cv=Y/D1cxeN c=1 sm=1 tr=0 ts=69bca90d cx=c_pps a=WeENfcodrlLV9YRTxbY/uA==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=ZpdpYltYx_vBUK5n70dp:22 a=EUspDBNiAAAA:8 a=UeMVAvltljHvvOQHH34A:9 a=QEXdDO2ut3YA:10 a=kacYvNCVWA4VmyqE58fU: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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 priorityscore=1501 adultscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1015 phishscore=0 bulkscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 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} | 134 ------------- .../iris/{iris_platform_gen2.c =3D> iris_hfi_gen2.c} | 214 ---------------= ------ .../platform/qcom/iris/iris_platform_common.h | 3 + .../platform/qcom/iris/iris_platform_sm8250.h | 29 +++ .../platform/qcom/iris/iris_platform_sm8550.h | 31 +++ .../media/platform/qcom/iris/iris_platform_vpu2.c | 124 ++++++++++++ .../media/platform/qcom/iris/iris_platform_vpu3x.c | 204 +++++++++++++++++= +++ 8 files changed, 395 insertions(+), 350 deletions(-) diff --git a/drivers/media/platform/qcom/iris/Makefile b/drivers/media/plat= form/qcom/iris/Makefile index 2fde45f81727..48e415cbc439 100644 --- a/drivers/media/platform/qcom/iris/Makefile +++ b/drivers/media/platform/qcom/iris/Makefile @@ -4,14 +4,16 @@ qcom-iris-objs +=3D iris_buffer.o \ iris_ctrls.o \ iris_firmware.o \ iris_hfi_common.o \ + iris_hfi_gen1.o \ iris_hfi_gen1_command.o \ iris_hfi_gen1_response.o \ + iris_hfi_gen2.o \ iris_hfi_gen2_command.o \ iris_hfi_gen2_packet.o \ iris_hfi_gen2_response.o \ iris_hfi_queue.o \ - iris_platform_gen1.o \ - iris_platform_gen2.o \ + iris_platform_vpu2.o \ + iris_platform_vpu3x.o \ iris_power.o \ iris_probe.o \ iris_resources.o \ diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen1.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen1.c similarity index 67% rename from drivers/media/platform/qcom/iris/iris_platform_gen1.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen1.c index 8875f90d487e..60f51a1ba941 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen1.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1.c @@ -3,38 +3,16 @@ * Copyright (c) 2022-2024 Qualcomm Innovation Center, Inc. All rights res= erved. */ =20 -#include "iris_core.h" #include "iris_ctrls.h" #include "iris_platform_common.h" -#include "iris_resources.h" #include "iris_hfi_gen1.h" #include "iris_hfi_gen1_defines.h" #include "iris_vpu_buffer.h" -#include "iris_vpu_common.h" -#include "iris_instance.h" - -#include "iris_platform_sc7280.h" =20 #define BITRATE_MIN 32000 #define BITRATE_MAX 160000000 -#define BITRATE_PEAK_DEFAULT (BITRATE_DEFAULT * 2) #define BITRATE_STEP 100 =20 -static struct iris_fmt platform_fmts_sm8250_dec[] =3D { - [IRIS_FMT_H264] =3D { - .pixfmt =3D V4L2_PIX_FMT_H264, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_HEVC] =3D { - .pixfmt =3D V4L2_PIX_FMT_HEVC, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_VP9] =3D { - .pixfmt =3D V4L2_PIX_FMT_VP9, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, -}; - static struct platform_inst_fw_cap inst_fw_cap_sm8250_dec[] =3D { { .cap_id =3D PIPE, @@ -248,56 +226,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8250_enc[] =3D { }, }; =20 -static struct platform_inst_caps platform_inst_cap_sm8250 =3D { - .min_frame_width =3D 128, - .max_frame_width =3D 8192, - .min_frame_height =3D 128, - .max_frame_height =3D 8192, - .max_mbpf =3D 138240, - .mb_cycles_vsp =3D 25, - .mb_cycles_vpp =3D 200, - .max_frame_rate =3D MAXIMUM_FPS, - .max_operating_rate =3D MAXIMUM_FPS, -}; - -static const struct icc_info sm8250_icc_table[] =3D { - { "cpu-cfg", 1000, 1000 }, - { "video-mem", 1000, 15000000 }, -}; - -static const char * const sm8250_clk_reset_table[] =3D { "bus", "core" }; - -static const struct bw_info sm8250_bw_table_dec[] =3D { - { ((4096 * 2160) / 256) * 60, 2403000 }, - { ((4096 * 2160) / 256) * 30, 1224000 }, - { ((1920 * 1080) / 256) * 60, 812000 }, - { ((1920 * 1080) / 256) * 30, 416000 }, -}; - -static const char * const sm8250_pmdomain_table[] =3D { "venus", "vcodec0"= }; - -static const char * const sm8250_opp_pd_table[] =3D { "mx", "mmcx" }; - -static const struct platform_clk_data sm8250_clk_table[] =3D { - {IRIS_AXI_CLK, "iface" }, - {IRIS_CTRL_CLK, "core" }, - {IRIS_HW_CLK, "vcodec0_core" }, -}; - -static const char * const sm8250_opp_clk_table[] =3D { - "vcodec0_core", - NULL, -}; - -static const struct tz_cp_config tz_cp_config_sm8250[] =3D { - { - .cp_start =3D 0, - .cp_size =3D 0x25800000, - .cp_nonpixel_start =3D 0x01000000, - .cp_nonpixel_size =3D 0x24800000, - }, -}; - static const u32 sm8250_vdec_input_config_param_default[] =3D { HFI_PROPERTY_CONFIG_VIDEOCORES_USAGE, HFI_PROPERTY_PARAM_UNCOMPRESSED_FORMAT_SELECT, @@ -356,65 +284,3 @@ const struct iris_firmware_data iris_hfi_gen1_data =3D= { .enc_ip_int_buf_tbl =3D sm8250_enc_ip_int_buf_tbl, .enc_ip_int_buf_tbl_size =3D ARRAY_SIZE(sm8250_enc_ip_int_buf_tbl), }; - -const struct iris_platform_data sm8250_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu2_ops, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .clk_rst_tbl =3D sm8250_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8250_clk_reset_table), - .bw_tbl_dec =3D sm8250_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sm8250_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), - .clk_tbl =3D sm8250_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), - .opp_clk_tbl =3D sm8250_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu-1.0/venus.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sc7280_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu2_ops, - .icc_tbl =3D sm8250_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8250_icc_table), - .bw_tbl_dec =3D sc7280_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), - .pmdomain_tbl =3D sm8250_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8250_pmdomain_table), - .opp_pd_tbl =3D sc7280_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), - .clk_tbl =3D sc7280_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), - .opp_clk_tbl =3D sc7280_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p1.mbn", - .inst_iris_fmts =3D platform_fmts_sm8250_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8250_dec), - .inst_caps =3D &platform_inst_cap_sm8250, - .tz_cp_config_data =3D tz_cp_config_sm8250, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8250), - .num_vpp_pipe =3D 1, - .no_aon =3D true, - .max_session_count =3D 16, - .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, - /* max spec for SC7280 is 4096x2176@60fps */ - .max_core_mbps =3D 4096 * 2176 / 256 * 60, -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_gen2.c b/driver= s/media/platform/qcom/iris/iris_hfi_gen2.c similarity index 77% rename from drivers/media/platform/qcom/iris/iris_platform_gen2.c rename to drivers/media/platform/qcom/iris/iris_hfi_gen2.c index 05fbab276100..ce8490d64854 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_gen2.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen2.c @@ -4,40 +4,15 @@ * Copyright (c) 2025 Linaro Ltd */ =20 -#include "iris_core.h" #include "iris_ctrls.h" #include "iris_hfi_gen2.h" #include "iris_hfi_gen2_defines.h" #include "iris_platform_common.h" #include "iris_vpu_buffer.h" -#include "iris_vpu_common.h" - -#include "iris_platform_qcs8300.h" -#include "iris_platform_sm8650.h" -#include "iris_platform_sm8750.h" =20 #define VIDEO_ARCH_LX 1 #define BITRATE_MAX 245000000 =20 -static struct iris_fmt platform_fmts_sm8550_dec[] =3D { - [IRIS_FMT_H264] =3D { - .pixfmt =3D V4L2_PIX_FMT_H264, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_HEVC] =3D { - .pixfmt =3D V4L2_PIX_FMT_HEVC, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_VP9] =3D { - .pixfmt =3D V4L2_PIX_FMT_VP9, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, - [IRIS_FMT_AV1] =3D { - .pixfmt =3D V4L2_PIX_FMT_AV1, - .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, - }, -}; - static const struct platform_inst_fw_cap inst_fw_cap_sm8550_dec[] =3D { { .cap_id =3D PROFILE_H264, @@ -742,58 +717,6 @@ static const struct platform_inst_fw_cap inst_fw_cap_s= m8550_enc[] =3D { }, }; =20 -static struct platform_inst_caps platform_inst_cap_sm8550 =3D { - .min_frame_width =3D 96, - .max_frame_width =3D 8192, - .min_frame_height =3D 96, - .max_frame_height =3D 8192, - .max_mbpf =3D (8192 * 4352) / 256, - .mb_cycles_vpp =3D 200, - .mb_cycles_fw =3D 489583, - .mb_cycles_fw_vpp =3D 66234, - .num_comv =3D 0, - .max_frame_rate =3D MAXIMUM_FPS, - .max_operating_rate =3D MAXIMUM_FPS, -}; - -static const struct icc_info sm8550_icc_table[] =3D { - { "cpu-cfg", 1000, 1000 }, - { "video-mem", 1000, 15000000 }, -}; - -static const char * const sm8550_clk_reset_table[] =3D { "bus" }; - -static const struct bw_info sm8550_bw_table_dec[] =3D { - { ((4096 * 2160) / 256) * 60, 1608000 }, - { ((4096 * 2160) / 256) * 30, 826000 }, - { ((1920 * 1080) / 256) * 60, 567000 }, - { ((1920 * 1080) / 256) * 30, 294000 }, -}; - -static const char * const sm8550_pmdomain_table[] =3D { "venus", "vcodec0"= }; - -static const char * const sm8550_opp_pd_table[] =3D { "mxc", "mmcx" }; - -static const struct platform_clk_data sm8550_clk_table[] =3D { - {IRIS_AXI_CLK, "iface" }, - {IRIS_CTRL_CLK, "core" }, - {IRIS_HW_CLK, "vcodec0_core" }, -}; - -static const char * const sm8550_opp_clk_table[] =3D { - "vcodec0_core", - NULL, -}; - -static const struct tz_cp_config tz_cp_config_sm8550[] =3D { - { - .cp_start =3D 0, - .cp_size =3D 0x25800000, - .cp_nonpixel_start =3D 0x01000000, - .cp_nonpixel_size =3D 0x24800000, - }, -}; - static const u32 sm8550_vdec_input_config_params_default[] =3D { HFI_PROP_BITSTREAM_RESOLUTION, HFI_PROP_CROP_OFFSETS, @@ -971,140 +894,3 @@ const struct iris_firmware_data iris_hfi_gen2_data = =3D { .enc_op_int_buf_tbl =3D sm8550_enc_op_int_buf_tbl, .enc_op_int_buf_tbl_size =3D ARRAY_SIZE(sm8550_enc_op_int_buf_tbl), }; - -const struct iris_platform_data sm8550_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - vpu_ops to iris_vpu33_ops - * - clk_rst_tbl to sm8650_clk_reset_table - * - controller_rst_tbl to sm8650_controller_reset_table - * - fwname to "qcom/vpu/vpu33_p4.mbn" - */ -const struct iris_platform_data sm8650_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, - .vpu_ops =3D &iris_vpu33_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8650_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), - .controller_rst_tbl =3D sm8650_controller_reset_table, - .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu33_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -const struct iris_platform_data sm8750_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, - .vpu_ops =3D &iris_vpu35_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8750_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8750_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu35_p4.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_sm8550, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .num_vpp_pipe =3D 4, - .max_session_count =3D 16, - .max_core_mbpf =3D NUM_MBS_8K * 2, - .max_core_mbps =3D ((7680 * 4320) / 256) * 60, -}; - -/* - * Shares most of SM8550 data except: - * - inst_caps to platform_inst_cap_qcs8300 - */ -const struct iris_platform_data qcs8300_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, - .vpu_ops =3D &iris_vpu3_ops, - .icc_tbl =3D sm8550_icc_table, - .icc_tbl_size =3D ARRAY_SIZE(sm8550_icc_table), - .clk_rst_tbl =3D sm8550_clk_reset_table, - .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), - .bw_tbl_dec =3D sm8550_bw_table_dec, - .bw_tbl_dec_size =3D ARRAY_SIZE(sm8550_bw_table_dec), - .pmdomain_tbl =3D sm8550_pmdomain_table, - .pmdomain_tbl_size =3D ARRAY_SIZE(sm8550_pmdomain_table), - .opp_pd_tbl =3D sm8550_opp_pd_table, - .opp_pd_tbl_size =3D ARRAY_SIZE(sm8550_opp_pd_table), - .clk_tbl =3D sm8550_clk_table, - .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), - .opp_clk_tbl =3D sm8550_opp_clk_table, - /* Upper bound of DMA address range */ - .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", - .inst_iris_fmts =3D platform_fmts_sm8550_dec, - .inst_iris_fmts_size =3D ARRAY_SIZE(platform_fmts_sm8550_dec), - .inst_caps =3D &platform_inst_cap_qcs8300, - .tz_cp_config_data =3D tz_cp_config_sm8550, - .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_sm8550), - .num_vpp_pipe =3D 2, - .max_session_count =3D 16, - .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, - .max_core_mbps =3D (((3840 * 2176) / 256) * 120), -}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 5af6d9f49f01..6dfead673393 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -40,6 +40,9 @@ enum pipe_type { PIPE_4 =3D 4, }; =20 +extern const struct iris_firmware_data iris_hfi_gen1_data; +extern const struct iris_firmware_data iris_hfi_gen2_data; + extern const struct iris_platform_data qcs8300_data; extern const struct iris_platform_data sc7280_data; extern const struct iris_platform_data sm8250_data; diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8250.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8250.h new file mode 100644 index 000000000000..50306043eb8e --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_sm8250.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries. + */ + +#ifndef __IRIS_PLATFORM_SM8250_H__ +#define __IRIS_PLATFORM_SM8250_H__ + +static const struct bw_info sm8250_bw_table_dec[] =3D { + { ((4096 * 2160) / 256) * 60, 2403000 }, + { ((4096 * 2160) / 256) * 30, 1224000 }, + { ((1920 * 1080) / 256) * 60, 812000 }, + { ((1920 * 1080) / 256) * 30, 416000 }, +}; + +static const char * const sm8250_opp_pd_table[] =3D { "mx", "mmcx" }; + +static const struct platform_clk_data sm8250_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_CLK, "vcodec0_core" }, +}; + +static const char * const sm8250_opp_clk_table[] =3D { + "vcodec0_core", + NULL, +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_sm8550.h b/driv= ers/media/platform/qcom/iris/iris_platform_sm8550.h new file mode 100644 index 000000000000..a9d9709c2e35 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_sm8550.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#ifndef __IRIS_PLATFORM_SM8550_H__ +#define __IRIS_PLATFORM_SM8550_H__ + +static const char * const sm8550_clk_reset_table[] =3D { "bus" }; + +static const struct platform_clk_data sm8550_clk_table[] =3D { + {IRIS_AXI_CLK, "iface" }, + {IRIS_CTRL_CLK, "core" }, + {IRIS_HW_CLK, "vcodec0_core" }, +}; + +static struct platform_inst_caps platform_inst_cap_sm8550 =3D { + .min_frame_width =3D 96, + .max_frame_width =3D 8192, + .min_frame_height =3D 96, + .max_frame_height =3D 8192, + .max_mbpf =3D (8192 * 4352) / 256, + .mb_cycles_vpp =3D 200, + .mb_cycles_fw =3D 489583, + .mb_cycles_fw_vpp =3D 66234, + .num_comv =3D 0, + .max_frame_rate =3D MAXIMUM_FPS, + .max_operating_rate =3D MAXIMUM_FPS, +}; + +#endif diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c new file mode 100644 index 000000000000..ab2a19aa9c36 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -0,0 +1,124 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_platform_common.h" +#include "iris_resources.h" +#include "iris_hfi_gen1.h" +#include "iris_hfi_gen1_defines.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" +#include "iris_instance.h" + +#include "iris_platform_sc7280.h" +#include "iris_platform_sm8250.h" + +static struct iris_fmt iris_fmts_vpu2_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static struct platform_inst_caps platform_inst_cap_vpu2 =3D { + .min_frame_width =3D 128, + .max_frame_width =3D 8192, + .min_frame_height =3D 128, + .max_frame_height =3D 8192, + .max_mbpf =3D 138240, + .mb_cycles_vsp =3D 25, + .mb_cycles_vpp =3D 200, + .max_frame_rate =3D MAXIMUM_FPS, + .max_operating_rate =3D MAXIMUM_FPS, +}; + +static const struct icc_info iris_icc_info_vpu2[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const char * const iris_clk_reset_table_vpu2[] =3D { "bus", "core" = }; + +static const char * const iris_pmdomain_table_vpu2[] =3D { "venus", "vcode= c0" }; + +static const struct tz_cp_config tz_cp_config_vpu2[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +const struct iris_platform_data sc7280_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D iris_icc_info_vpu2, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), + .bw_tbl_dec =3D sc7280_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sc7280_bw_table_dec), + .pmdomain_tbl =3D iris_pmdomain_table_vpu2, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu2), + .opp_pd_tbl =3D sc7280_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sc7280_opp_pd_table), + .clk_tbl =3D sc7280_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sc7280_clk_table), + .opp_clk_tbl =3D sc7280_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu20_p1.mbn", + .inst_iris_fmts =3D iris_fmts_vpu2_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), + .inst_caps =3D &platform_inst_cap_vpu2, + .tz_cp_config_data =3D tz_cp_config_vpu2, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu2), + .num_vpp_pipe =3D 1, + .no_aon =3D true, + .max_session_count =3D 16, + .max_core_mbpf =3D 4096 * 2176 / 256 * 2 + 1920 * 1088 / 256, + /* max spec for SC7280 is 4096x2176@60fps */ + .max_core_mbps =3D 4096 * 2176 / 256 * 60, +}; + +const struct iris_platform_data sm8250_data =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu2_ops, + .icc_tbl =3D iris_icc_info_vpu2, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), + .clk_rst_tbl =3D iris_clk_reset_table_vpu2, + .clk_rst_tbl_size =3D ARRAY_SIZE(iris_clk_reset_table_vpu2), + .bw_tbl_dec =3D sm8250_bw_table_dec, + .bw_tbl_dec_size =3D ARRAY_SIZE(sm8250_bw_table_dec), + .pmdomain_tbl =3D iris_pmdomain_table_vpu2, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu2), + .opp_pd_tbl =3D sm8250_opp_pd_table, + .opp_pd_tbl_size =3D ARRAY_SIZE(sm8250_opp_pd_table), + .clk_tbl =3D sm8250_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8250_clk_table), + .opp_clk_tbl =3D sm8250_opp_clk_table, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu-1.0/venus.mbn", + .inst_iris_fmts =3D iris_fmts_vpu2_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), + .inst_caps =3D &platform_inst_cap_vpu2, + .tz_cp_config_data =3D tz_cp_config_vpu2, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu2), + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c b/drive= rs/media/platform/qcom/iris/iris_platform_vpu3x.c new file mode 100644 index 000000000000..c2496aa0f851 --- /dev/null +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c @@ -0,0 +1,204 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) Qualcomm Innovation Center, Inc. All rights reserved. + * Copyright (c) 2025 Linaro Ltd + */ + +#include "iris_core.h" +#include "iris_ctrls.h" +#include "iris_hfi_gen2.h" +#include "iris_hfi_gen2_defines.h" +#include "iris_platform_common.h" +#include "iris_vpu_buffer.h" +#include "iris_vpu_common.h" + +#include "iris_platform_qcs8300.h" +#include "iris_platform_sm8550.h" +#include "iris_platform_sm8650.h" +#include "iris_platform_sm8750.h" + +static struct iris_fmt iris_fmts_vpu3x_dec[] =3D { + [IRIS_FMT_H264] =3D { + .pixfmt =3D V4L2_PIX_FMT_H264, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_HEVC] =3D { + .pixfmt =3D V4L2_PIX_FMT_HEVC, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_VP9] =3D { + .pixfmt =3D V4L2_PIX_FMT_VP9, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, + [IRIS_FMT_AV1] =3D { + .pixfmt =3D V4L2_PIX_FMT_AV1, + .type =3D V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + }, +}; + +static const struct icc_info iris_icc_info_vpu3x[] =3D { + { "cpu-cfg", 1000, 1000 }, + { "video-mem", 1000, 15000000 }, +}; + +static const struct bw_info iris_bw_table_dec_vpu3x[] =3D { + { ((4096 * 2160) / 256) * 60, 1608000 }, + { ((4096 * 2160) / 256) * 30, 826000 }, + { ((1920 * 1080) / 256) * 60, 567000 }, + { ((1920 * 1080) / 256) * 30, 294000 }, +}; + +static const char * const iris_pmdomain_table_vpu3x[] =3D { "venus", "vcod= ec0" }; + +static const char * const iris_opp_pd_table_vpu3x[] =3D { "mxc", "mmcx" }; + +static const char * const iris_opp_clk_table_vpu3x[] =3D { + "vcodec0_core", + NULL, +}; + +static const struct tz_cp_config tz_cp_config_vpu3[] =3D { + { + .cp_start =3D 0, + .cp_size =3D 0x25800000, + .cp_nonpixel_start =3D 0x01000000, + .cp_nonpixel_size =3D 0x24800000, + }, +}; + +/* + * Shares most of SM8550 data except: + * - inst_caps to platform_inst_cap_qcs8300 + */ +const struct iris_platform_data qcs8300_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_qcs8300, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .num_vpp_pipe =3D 2, + .max_session_count =3D 16, + .max_core_mbpf =3D ((4096 * 2176) / 256) * 4, + .max_core_mbps =3D (((3840 * 2176) / 256) * 120), +}; + +const struct iris_platform_data sm8550_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .vpu_ops =3D &iris_vpu3_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8550_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8550_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +/* + * Shares most of SM8550 data except: + * - vpu_ops to iris_vpu33_ops + * - clk_rst_tbl to sm8650_clk_reset_table + * - controller_rst_tbl to sm8650_controller_reset_table + * - fwname to "qcom/vpu/vpu33_p4.mbn" + */ +const struct iris_platform_data sm8650_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .vpu_ops =3D &iris_vpu33_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8650_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8650_clk_reset_table), + .controller_rst_tbl =3D sm8650_controller_reset_table, + .controller_rst_tbl_size =3D ARRAY_SIZE(sm8650_controller_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8550_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8550_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; + +const struct iris_platform_data sm8750_data =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .vpu_ops =3D &iris_vpu35_ops, + .icc_tbl =3D iris_icc_info_vpu3x, + .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), + .clk_rst_tbl =3D sm8750_clk_reset_table, + .clk_rst_tbl_size =3D ARRAY_SIZE(sm8750_clk_reset_table), + .bw_tbl_dec =3D iris_bw_table_dec_vpu3x, + .bw_tbl_dec_size =3D ARRAY_SIZE(iris_bw_table_dec_vpu3x), + .pmdomain_tbl =3D iris_pmdomain_table_vpu3x, + .pmdomain_tbl_size =3D ARRAY_SIZE(iris_pmdomain_table_vpu3x), + .opp_pd_tbl =3D iris_opp_pd_table_vpu3x, + .opp_pd_tbl_size =3D ARRAY_SIZE(iris_opp_pd_table_vpu3x), + .clk_tbl =3D sm8750_clk_table, + .clk_tbl_size =3D ARRAY_SIZE(sm8750_clk_table), + .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, + /* Upper bound of DMA address range */ + .dma_mask =3D 0xe0000000 - 1, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", + .inst_iris_fmts =3D iris_fmts_vpu3x_dec, + .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), + .inst_caps =3D &platform_inst_cap_sm8550, + .tz_cp_config_data =3D tz_cp_config_vpu3, + .tz_cp_config_data_size =3D ARRAY_SIZE(tz_cp_config_vpu3), + .num_vpp_pipe =3D 4, + .max_session_count =3D 16, + .max_core_mbpf =3D NUM_MBS_8K * 2, + .max_core_mbps =3D ((7680 * 4320) / 256) * 60, +}; --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 4C3EB33F586 for ; Fri, 20 Mar 2026 01:55:30 +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=1773971736; cv=none; b=Lbl1mxKDOTgTnvI6W5iycrstWEWy395/CThqb4oqltGw7wZpZl0Fb7/XM6IIKGVOx1FHsljGcxEuBNa8Tw7mrpiW3ONsco1l4LO8+NaBCFAFaHdI9fSnZSl/1JVRnqqyePZW9elnpXHzBt1yeu5/p/+Mfz2/nHBJi5N62wmx/WM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971736; c=relaxed/simple; bh=9KYQ4mP8r4dJEkonOPAFQaieXV/3Q2yhfdlMr2DFkuQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M4sWenwKTlqzhiP+7FwVXZSXxZGDwoHxHXaTH09FqPDOxHLNsTvrrvxknBBvGP3aRvQ7P9LYfeRZDrEhXAo2JWpG2tUVzrJI7QeEclC4U9vHNq+L7MlrSUuS5vVZsNJPBc5i6oBr/ehpeggSzGTNSZ1XcfMuC/cW188vCG1d/U0= 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=hhgWNDEs; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=PPj/rRh2; 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="hhgWNDEs"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="PPj/rRh2" 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 62K1B2m61567793 for ; Fri, 20 Mar 2026 01:55:29 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= ZxDQDVAUD4jwRWPx6btZcogiI3FOwvGdejCVTe0Ku5E=; b=hhgWNDEsTVrF38ud dTmVNLFEsMudBPWGpyeefdnvI71268pp0zoRj/Vyw/T1FM4AnzzD6fZsca5SD69X WAN2hDC3luXT6Nlktf2H4qk/Qm4GrCRwSzfQo+Wc2LlOpWDuUlaZX4r++tOoirYy h0SzsOpQ6ahjFm6sxcZLLvhQseaXBW7PlaiDxBAF0dOSu/yJjYRAq/7FgOZWiO5K /5sr2uWKO/Smc7Y1oWDEbOElE4aI2EJAe9YUIxcpWurMIwWowS0UFnPzW6XiBuS+ ZHFK4f2sX0O2NuT0SHgIq02nRcmiopDnl1Hy4z39aEHOPAF4F7Kt3e9pspJx3O5s BxUTWg== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0akxkkfh-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:29 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-5090cc6a7d2so11543041cf.2 for ; Thu, 19 Mar 2026 18:55:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971728; x=1774576528; 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=ZxDQDVAUD4jwRWPx6btZcogiI3FOwvGdejCVTe0Ku5E=; b=PPj/rRh2AP7mVx4LrDegq96hqfEs0svXjrNF5W6y0meB2ldcmx2etYjOub5XxD6S30 DjzkOvo59HSNOblmwrElGxsyGRZi2pwd7Aqqc9sIk0FY0JKDMo1cgNTUY6/I+bFj5WhM ziK3yxMIQGHyTUrxaQdcC0yr8V5fuVm3bomTOy1QmnakVF5Ibm2LM30DcKcJMsgrd/Bj v5GGhKdhb/PQd3S8+hEjhBwyMVMUHZLYUwE7cPCr5i+UoS1/WaXwQBRi9KrDWG5HwugW w7O5akx53BnsDnZ4P8puaazNOuGNjGOig75bUb2ITZ8sTKVYIJNRygGNVzWa1a7G90B9 dMAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971728; x=1774576528; 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=ZxDQDVAUD4jwRWPx6btZcogiI3FOwvGdejCVTe0Ku5E=; b=KcIk0gjEMGv0G5sOtYx41TLiG6TxEz1VRWHwc2HEYZmZ2OGhdTHxHOUOMwpFWh064k /ENfUVogREnyvzIRRbr7Ee6y3o+amKxZrb4cY8SmqNW+4wb8dvQhKNzHUy+dxwmOOJr+ 9eFt1vz6nBi8WOTsiFzWHNvbpF7XSfSol5Z5giVFc3IUn0VtwXq3seW1Y7b49ue59QxB SQS5DN956VRhAFbFHfTPOQGiD5hwAYqnNtMOx2eN+66viqZWddDYOdMYIwFZrPmB/p0n LElk5WS3WbD+Uj5ePy89vKIeLEUxw7dQoMQAM6awmb9sjp0Urs0ueAZ4GlIPwlWXorx6 oV8w== X-Forwarded-Encrypted: i=1; AJvYcCV3RKIO8O82F0y3U0c+QKX9WT5K4SjazptSWomEBxNkMBZsyuGhWDixOmtRSz9O1rCjkcSCWmk/ZlUhpuw=@vger.kernel.org X-Gm-Message-State: AOJu0YwSjNmnrtOkQlfRKKiaxUHDFJv0KD16sEkw4oR8u+n1suBzZxcJ c7aOMUDircGq3qZg6Wg6OyokRys2MCME6uS2NNfgnXbhfNNkVtmtaPXBwVP2+++r5wDklYMSMv4 qSCIf5SHnvaZghO+nUd6C/uHQiIetVGfZpOK+jTAuprGjOxctDKt7j6A7G4OOP2jbRkA= X-Gm-Gg: ATEYQzxBDMl9RbjGZO1skEMNFnzPvD6mcHQPa+bUe2jaDhP7jIW/HZPDJs5+utViSa8 JYqqIAIIotN5hAom8E1uirZ9floX6PB/2bV8+J1AND7QpFTlUH/YzPmRjtHQF6Bqic28VE7VkCq Gi8kn+fWXnYer5rXGc0AeMwDrYNnoQhnsPzJfKiOS+2XaSQ6atPxd5DZ3A9k4HYbaIN4qt3OSQw /IPv+Jc9X41l4IYPi36vGGOfj98yix5YoY81/kDh6I8qoXjx2w2Q08C4nQchRDn2Y/pAub+IH2w NXPM+7/DHPJhUDIWWiBN4aoUHr1zybletgfuY+DSw7S/1F3wDBfB9hsb5XRwGZRWMBK+oG4UICP MHkxmi7cskE6jeq01jQD1cI2vFARuKYHddN6qG2s6LGdBLfJreTqtcp9HMgp0hwaBvuidqb6NT5 o62wGs6ZzPRMLh2cRVgEDxSYnBNMPq8MhAZw8= X-Received: by 2002:a05:622a:178f:b0:509:bdb:1539 with SMTP id d75a77b69052e-50b3744891emr22596091cf.23.1773971728513; Thu, 19 Mar 2026 18:55:28 -0700 (PDT) X-Received: by 2002:a05:622a:178f:b0:509:bdb:1539 with SMTP id d75a77b69052e-50b3744891emr22595541cf.23.1773971727126; Thu, 19 Mar 2026 18:55:27 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:24 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:50 +0200 Subject: [PATCH v9 10/11] media: qcom: iris: use new firmware name for SM8250 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-10-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=1172; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=9KYQ4mP8r4dJEkonOPAFQaieXV/3Q2yhfdlMr2DFkuQ=; b=kA0DAAoBizyKPgIpKNUByyZiAGm8qOajaR0GiLyf1pfu+VnXoI8jLqhJ7WG7IaGPs0RDqUiU9 4kBMwQAAQoAHRYhBExwhJVcsmNW8LiVf4s8ij4CKSjVBQJpvKjmAAoJEIs8ij4CKSjVTuwH/2fX Il2S/zJ8wi/gdULkhsV69go/z8ocU9AHqtW/W62r6N59WLRJFkeJXn6FnPACabPU3886+UKkzey 8HYMTuSuuj7EAYeC9UEDOZ+Etj026/1p8LO5CqrQUNkwZdTYQ7ZgsIiT5goYQ6VrFRggptjoSDc ub/kx44orbvKDr6yGoAOSgd0k/aqs+Oic0qs9653im21peS7Hi/0mlDnHLDH1ALmq+JhjJezNCe vgWp8PE59ajFN4FmKHt+5nBXlfRZODDy/Z4mO2cRkUcdtpIwU4OzkDmqPaHcYW9avmWUVzmmwpZ aHUY91EsdUyYmIeGh1MEEeCANhJ09+8w5FSKfxY= X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfXyQ/DHrQPXkDd MyWeNR9atio/KpUpGPufLojID54nHhoMeojQiLaC1P3s/HfImq2cEDW8j2bEslo5/LkFpaDTtdG oXzwMvVXotOxhf0XLF6D1T4XCXnbhHASalUJoZY4pwWEwq5VKtrps7i239wMdB2pXkQEK6bZMaA 1Y2Lg22HC7x7z+ZkunmpY3xQgwdcCV+AM87E6QGa+V1MhX/Wb7WfHO0eXI13tzRVSoKrwEJ+MvC N9TzNb+gS605HKh1EcVrmHroo3rgDRHDkX6eeaaq+Y94Qn+glqgTYkMu+EHjsD21QAnStZXwRqZ helfKWKPSGZ24wLOO/1Gw8it4+0rfYKkVuP2HvKFuhsiY4/Jc7YKSJe2/Uq8fyvhMkUywV5H2pW 81jLXZqV8Y9w3sBh9VK+CkuZ0KrzaldJ2xMwZpRajahF7rWU4u1zWWJ6QVJVSdzEMnsykGxJLzM jJbQi711N/ur4JxUTYg== X-Proofpoint-GUID: jtlAFxVbfusF0jYb7JyyQrCsH_7c5IMJ X-Authority-Analysis: v=2.4 cv=ZeMQ98VA c=1 sm=1 tr=0 ts=69bca911 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=nz9G3-SO7wN5dIpBwN0A:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: jtlAFxVbfusF0jYb7JyyQrCsH_7c5IMJ 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 priorityscore=1501 adultscore=0 bulkscore=0 clxscore=1015 spamscore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 The linux-firmware is providing the vpuNN_pM.mbn firmware for SM8250 since August of 2024. Stop using the legacy firmware name (vpu-1.0/venus.mbn) and switch to the standard firmware name schema (vpu/vpu20_p4.mbn). Reviewed-by: Vikash Garodia Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_platform_vpu2.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c index ab2a19aa9c36..692fbc2aab56 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -111,7 +111,7 @@ const struct iris_platform_data sm8250_data =3D { .opp_clk_tbl =3D sm8250_opp_clk_table, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu-1.0/venus.mbn", + .fwname =3D "qcom/vpu/vpu20_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, --=20 2.47.3 From nobody Mon Apr 6 09:10:04 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 9B076332EAE for ; Fri, 20 Mar 2026 01:55:33 +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=1773971740; cv=none; b=YXnxdCMVVHPw85IM81InK0ES67AV5XDsUXeP9m9UFjN9DmQO3ge9Z+aPShun5J9dertk/iwwsSUQBnOQOFnjbN+TIPQhBfkLCDQPhJkViHXva0sdIzmddOqIfYj4an9jGHyP779YABZyYWBSo73V296L6rxm1v6fqxnSTtYitZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773971740; c=relaxed/simple; bh=tosnyhh8DtswMdbD6EGU7YTtdFXnAzWlifAthWRXRV0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ApcLEH6WBLXzS2w3A4Uae3yM1vBodklHcqdHtInskJYsQUehitNwiOlNNp4XvMyktbLXcSYLH0yBtx/DbDwXiC0F3enFxCnvJfAQUJfNaK4HUmKRbku4uV5ELV5HtGL2VjJuMSvxwpnHjSZvDgkhuc4boOdiqnLl3ajxUlKoXAA= 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=e3T/0T2X; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Bv2LG8UD; 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="e3T/0T2X"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Bv2LG8UD" 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 62JG6hJT920843 for ; Fri, 20 Mar 2026 01:55:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=e3T/0T2XBfjsVQV6 gO6KBbnstrUI7dI/EQjf6C9a0rgXeHbq/LIAo0kMx5ZkU/nopK01Wot7dpF0uN4S SLZ6mWk6YvOFLJ6iGNWu5rkTV/vf7gDCpdTyrpC2unzE2le5/tFtwu8rbVMrpIHM FJ4uxpX+FSs6PoJ278DZIR62Ze5nTuzma6WCUw+F13FCzK8vPs/Y+dct5A/Jlz3Q VnEkYZTGiKnzF1bMZ7DfBa5eYFuH74tKFmyhytTw77vqr2WxPTmUxNx2SD6ZILH9 6xxtbwGuHXuMPIkwNSF9LShhn9cX5N8l4TXk9OczoSx8hK13KRvd13tIQ/XKyXBJ zp95RA== Received: from mail-qt1-f197.google.com (mail-qt1-f197.google.com [209.85.160.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4d0mcm9jq3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 20 Mar 2026 01:55:32 +0000 (GMT) Received: by mail-qt1-f197.google.com with SMTP id d75a77b69052e-50b392f53b0so15153201cf.2 for ; Thu, 19 Mar 2026 18:55:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773971731; x=1774576531; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=Bv2LG8UDCWOqS4kOr27bhmO1gx+Mi2rsyITxKnbq6lVbNT6nf2QcDLnIUenhulhuYl 9CIVou4XlUpcZY66HYUbxSQdBGaWRBNiZKFLp0dWJcEM+Pu1y6xy1SAdpcDgwOx52oVC y4nPPW9wAbiD/1+OILI75jfzO1uzgNvNbVU9WZ42ghqVklBXwaX/2R7vhR4CAEGrL2DB 1uN7byCimwJ0zMHXmHdZ0TDhC7vvAHpBn2mCG8RgVcbMFCKHM1NSqLtZ0uFpZnipsX4O IG/E8S9oD2oZxstNjdgcxUdA+DJitj4wn6PW6wl7HjwkLyF38skHXGoR63X+UUBW3KT2 4xpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773971731; x=1774576531; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=zAAZ9np3vSaZuqX49z75F1UXFOFKtBEtrhQT2MwCAZg=; b=jyVeKHcYahiNaVC0t7PcTPnjyNE1YfKIfekMF2+sL5OblGFQTDJACov1GoiGbpSOqK hx8il2Z0F8RiXirG1VP3Dm0fo8L1w+pOLQ5DXRdXzO5x8ZljQqPfRLq2zTCW81FO3G3Z CevSKz4Dp8ss3cWHFv/A5NSzuOc4JEr8m0uNhRBpvbJaWQ+rCdI3APJSaGTD/1/eRbug ck07imgVK4n4UjAe4MNCUg9VloexRPLVMN9NKQHXX36erGu6Npi6gx2KiMWssNJJqL2i OU+i0C3tGHT7WX4JUBWQXSngXuE3j41gjSX9A9EAbvIutgDwY2g7LJc1Upf4+o9nHjQ+ sfGA== X-Forwarded-Encrypted: i=1; AJvYcCVQhKjYxjd0kFhEKNlYDSHZdeAS64X6yFUIJu42ZmGCmItjbIXllEBhpF9wfp3PtJ6OOBedNbnclrGWtiE=@vger.kernel.org X-Gm-Message-State: AOJu0YxfYcIIJXiZ8FLP9zidDh4haN2X2y4OpJT7c5wuxRJ9WCkQFs4v 8VlU4I/0A1PWvaJCbnLuyibzam2hnGgjSIFKox4ZdnQs7GXYLnBbilwaNwOJZGYpLrxXmbWPMtL Z747hybP1MVA3QHX5dQ+2/0Mm87lCVw1nEmsxji1hns2ELM+3L+GAM9Po/20SjPXDACU= X-Gm-Gg: ATEYQzz0btym1H7XknGWajxnjUYC4bqqnFNeCMXNLzUSowNMuj2U0fhH96RZjQHBvYf /Zhmb55PFNxtw/hAJ4k15on6/s2KPWXW55VkDv7tEHCVkXsS/uST4wmWTnv4R6F2gnsTe0ikjbV 30O+pWt0piH2Oc4Zy1miAwvHR2tu+60yCyn2X5z36fpm47bp9vYOrdAm0Q0Lq0lakXSVBlgGro+ vtVDq1OGeOXu7I8DtPPHVORu57zx0wQLyxRmnaBpnPnDuJCDJK187N2MZ7M+DmDq9SXD1KJli8a 7ep2PJe4ltqEffy4w/dnOpXahhGxSxgo8beULJ4DZkoNuHU2VyiMCf1dDS570smNppaz/uMZJOD mwHCKsi5OQ1609fr3EaVtatPYqhiEy7nf7QQjFgBT7EJk4ahwljtDZh52Lj+4GAjYXP9mnzrvld J71EqRSB/AbmKKF34SfIpmYPQep4jLUEfWA30= X-Received: by 2002:a05:622a:a9cb:10b0:509:379b:d46 with SMTP id d75a77b69052e-50b373f128cmr18706901cf.11.1773971731404; Thu, 19 Mar 2026 18:55:31 -0700 (PDT) X-Received: by 2002:a05:622a:a9cb:10b0:509:379b:d46 with SMTP id d75a77b69052e-50b373f128cmr18706751cf.11.1773971730928; Thu, 19 Mar 2026 18:55:30 -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-5a285305eefsm232344e87.70.2026.03.19.18.55.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Mar 2026 18:55:28 -0700 (PDT) From: Dmitry Baryshkov Date: Fri, 20 Mar 2026 03:54:51 +0200 Subject: [PATCH v9 11/11] media: qcom: iris: extract firmware description data Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260320-iris-platform-data-v9-11-3939967f4752@oss.qualcomm.com> References: <20260320-iris-platform-data-v9-0-3939967f4752@oss.qualcomm.com> In-Reply-To: <20260320-iris-platform-data-v9-0-3939967f4752@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=12526; i=dmitry.baryshkov@oss.qualcomm.com; h=from:subject:message-id; bh=tosnyhh8DtswMdbD6EGU7YTtdFXnAzWlifAthWRXRV0=; b=owEBbQGS/pANAwAKAYs8ij4CKSjVAcsmYgBpvKjmI4E1wr9DKwJQ7Y3M8UWGSJNwUsYXGjgu/ A/xCr2taxCJATMEAAEKAB0WIQRMcISVXLJjVvC4lX+LPIo+Aiko1QUCabyo5gAKCRCLPIo+Aiko 1WvXB/41aSKcwqUeU0f7/Ih4g88dG/28asJkNq27A+Q+OI15F64eJK5Ld5CrmBzYt26RoOKMtuK SOZOcACPZAAkF3p1tujhJk0TzsNfwRBW8FzJsGOvge/r+VHbhn9+L7fyK5ZtMixe/+CjPC4UMBN HSswy+b6goQWOfxIiYaHhOdl3OQixgL4km5vJLhuoVdNF8dE4EmT5JyPs24vqiW9tufH/mZIGnu 9zzyBI0y4j8XT2GR0cLQ2h32JpIB2/uHGpKuoYYgwdnjWddTp9A8afR6xRGjL3qb8SoE3wkUXOo iw42aE0S0vdLkWpfKscrJvNeo2CUTEuJ+x9M/nxMv9JQ86H0 X-Developer-Key: i=dmitry.baryshkov@oss.qualcomm.com; a=openpgp; fpr=8F88381DD5C873E4AE487DA5199BF1243632046A X-Proofpoint-GUID: 5WJsJUFkvH35Sm3Fp_q6JL0wgSLeppHA X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIwMDAxMyBTYWx0ZWRfX+r875jgM3JzS GvyJpNpeNIqfCVZBtrLwOOyNs5lk6MAvfffaWrHKpsyZcGxer6a2rQG5sxW3UN33PQHyqxxefHh m+ZWRmhFmWa/wnp+yKlbWUktQ0vTTWYn8jiE6QWS88fObUtZYGBziYx8o6H/1Wjw5i4twHcQAph WjFH7RHz9HuuD/Mu0OrnGmUArI9umm0t29jtJ5RHv0ZQ4s+dXBWk0fa6uAQU//VoLrRY2A0JvVe bKdiiMta+8UxKAQMwtedf+2uGqF1pp7vKI/jKP3ZJaT+1/sUVeNMYLGSFoKERc9rPHTQp+vZCwF iE2MO2PELfB2ECN0WvsP0cXR8MGCbYd9TGYVjp8G6EjJm0KHRxlZCVWpjFp6QOVT79ZeozPco5u yDBAETP1WU532VilyzU2Cj7bvuqdaQKORD1lp/V3e/GH+5YVwOFkhbinrAp/LkRqYrn1rkvZy9I cvN72DJ/TJAjnerk1Fw== X-Authority-Analysis: v=2.4 cv=BdLVE7t2 c=1 sm=1 tr=0 ts=69bca914 cx=c_pps a=EVbN6Ke/fEF3bsl7X48z0g==:117 a=xqWC_Br6kY4A:10 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=pn2aoerzR4tYcExiNNwA:9 a=QEXdDO2ut3YA:10 a=a_PwQJl-kcHnX1M80qC6:22 X-Proofpoint-ORIG-GUID: 5WJsJUFkvH35Sm3Fp_q6JL0wgSLeppHA 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-19_04,2026-03-19_05,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 priorityscore=1501 impostorscore=0 bulkscore=0 phishscore=0 lowpriorityscore=0 spamscore=0 adultscore=0 malwarescore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603200013 In preparation to adding support for several firmware revisions to be used for a platform, extract the firmware description data. It incorporates firmware name, HFI ops and buffer requirements of the particular firmware build. Signed-off-by: Dmitry Baryshkov --- drivers/media/platform/qcom/iris/iris_buffer.c | 2 +- drivers/media/platform/qcom/iris/iris_core.h | 1 + drivers/media/platform/qcom/iris/iris_firmware.c | 2 +- .../platform/qcom/iris/iris_hfi_gen1_command.c | 2 +- .../platform/qcom/iris/iris_platform_common.h | 15 ++++---- .../media/platform/qcom/iris/iris_platform_vpu2.c | 20 +++++++---- .../media/platform/qcom/iris/iris_platform_vpu3x.c | 41 +++++++++++++++---= ---- drivers/media/platform/qcom/iris/iris_probe.c | 3 +- 8 files changed, 57 insertions(+), 29 deletions(-) diff --git a/drivers/media/platform/qcom/iris/iris_buffer.c b/drivers/media= /platform/qcom/iris/iris_buffer.c index fbe136360aa1..ef7f6f931557 100644 --- a/drivers/media/platform/qcom/iris/iris_buffer.c +++ b/drivers/media/platform/qcom/iris/iris_buffer.c @@ -295,7 +295,7 @@ static void iris_fill_internal_buf_info(struct iris_ins= t *inst, { struct iris_buffers *buffers =3D &inst->buffers[buffer_type]; =20 - buffers->size =3D inst->core->iris_platform_data->get_vpu_buffer_size(ins= t, buffer_type); + buffers->size =3D inst->core->iris_firmware_desc->get_vpu_buffer_size(ins= t, buffer_type); buffers->min_count =3D iris_vpu_buf_count(inst, buffer_type); } =20 diff --git a/drivers/media/platform/qcom/iris/iris_core.h b/drivers/media/p= latform/qcom/iris/iris_core.h index e0ca245c8c63..7f36eb65dcbf 100644 --- a/drivers/media/platform/qcom/iris/iris_core.h +++ b/drivers/media/platform/qcom/iris/iris_core.h @@ -99,6 +99,7 @@ struct iris_core { struct reset_control_bulk_data *controller_resets; const struct iris_platform_data *iris_platform_data; const struct iris_firmware_data *iris_firmware_data; + const struct iris_firmware_desc *iris_firmware_desc; const struct qcom_ubwc_cfg_data *ubwc_cfg; enum iris_core_state state; dma_addr_t iface_q_table_daddr; diff --git a/drivers/media/platform/qcom/iris/iris_firmware.c b/drivers/med= ia/platform/qcom/iris/iris_firmware.c index bc6c5c3e00c3..1a476146d758 100644 --- a/drivers/media/platform/qcom/iris/iris_firmware.c +++ b/drivers/media/platform/qcom/iris/iris_firmware.c @@ -72,7 +72,7 @@ int iris_fw_load(struct iris_core *core) ret =3D of_property_read_string_index(core->dev->of_node, "firmware-name"= , 0, &fwpath); if (ret) - fwpath =3D core->iris_platform_data->fwname; + fwpath =3D core->iris_firmware_desc->fwname; =20 ret =3D iris_load_fw_to_memory(core, fwpath); if (ret) { diff --git a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c b/dri= vers/media/platform/qcom/iris/iris_hfi_gen1_command.c index 3fb90a466a64..83373862655f 100644 --- a/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c +++ b/drivers/media/platform/qcom/iris/iris_hfi_gen1_command.c @@ -918,7 +918,7 @@ static int iris_hfi_gen1_set_bufsize(struct iris_inst *= inst, u32 plane) =20 if (iris_split_mode_enabled(inst)) { bufsz.type =3D HFI_BUFFER_OUTPUT; - bufsz.size =3D inst->core->iris_platform_data->get_vpu_buffer_size(inst,= BUF_DPB); + bufsz.size =3D inst->core->iris_firmware_desc->get_vpu_buffer_size(inst,= BUF_DPB); =20 ret =3D hfi_gen1_set_property(inst, ptype, &bufsz, sizeof(bufsz)); if (ret) diff --git a/drivers/media/platform/qcom/iris/iris_platform_common.h b/driv= ers/media/platform/qcom/iris/iris_platform_common.h index 6dfead673393..6a108173be35 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_common.h +++ b/drivers/media/platform/qcom/iris/iris_platform_common.h @@ -250,14 +250,18 @@ struct iris_firmware_data { unsigned int enc_op_int_buf_tbl_size; }; =20 +struct iris_firmware_desc { + const struct iris_firmware_data *firmware_data; + u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + const char *fwname; +}; + struct iris_platform_data { /* - * XXX: remove firmware_data pointer and consider moving - * get_vpu_buffer_size pointer once we have platforms supporting both - * firmware kinds. + * XXX: replace with gen1 / gen2 pointers once we have platforms + * supporting both firmware kinds. */ - const struct iris_firmware_data *firmware_data; - u32 (*get_vpu_buffer_size)(struct iris_inst *inst, enum iris_buffer_type = buffer_type); + const struct iris_firmware_desc *firmware_desc; =20 const struct vpu_ops *vpu_ops; const struct icc_info *icc_tbl; @@ -276,7 +280,6 @@ struct iris_platform_data { const char * const *controller_rst_tbl; unsigned int controller_rst_tbl_size; u64 dma_mask; - const char *fwname; struct iris_fmt *inst_iris_fmts; u32 inst_iris_fmts_size; struct platform_inst_caps *inst_caps; diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c b/driver= s/media/platform/qcom/iris/iris_platform_vpu2.c index 692fbc2aab56..ff8ce078238a 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu2.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu2.c @@ -16,6 +16,18 @@ #include "iris_platform_sc7280.h" #include "iris_platform_sm8250.h" =20 +const struct iris_firmware_desc iris_vpu20_p1_gen1_desc =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu20_p1.mbn", +}; + +const struct iris_firmware_desc iris_vpu20_p4_gen1_desc =3D { + .firmware_data =3D &iris_hfi_gen1_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu20_p4.mbn", +}; + static struct iris_fmt iris_fmts_vpu2_dec[] =3D { [IRIS_FMT_H264] =3D { .pixfmt =3D V4L2_PIX_FMT_H264, @@ -62,8 +74,7 @@ static const struct tz_cp_config tz_cp_config_vpu2[] =3D { }; =20 const struct iris_platform_data sc7280_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu20_p1_gen1_desc, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D iris_icc_info_vpu2, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), @@ -78,7 +89,6 @@ const struct iris_platform_data sc7280_data =3D { .opp_clk_tbl =3D sc7280_opp_clk_table, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p1.mbn", .inst_iris_fmts =3D iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, @@ -93,8 +103,7 @@ const struct iris_platform_data sc7280_data =3D { }; =20 const struct iris_platform_data sm8250_data =3D { - .firmware_data =3D &iris_hfi_gen1_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu20_p4_gen1_desc, .vpu_ops =3D &iris_vpu2_ops, .icc_tbl =3D iris_icc_info_vpu2, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu2), @@ -111,7 +120,6 @@ const struct iris_platform_data sm8250_data =3D { .opp_clk_tbl =3D sm8250_opp_clk_table, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu20_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu2_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu2_dec), .inst_caps =3D &platform_inst_cap_vpu2, diff --git a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c b/drive= rs/media/platform/qcom/iris/iris_platform_vpu3x.c index c2496aa0f851..c3b6cd6fe777 100644 --- a/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c +++ b/drivers/media/platform/qcom/iris/iris_platform_vpu3x.c @@ -17,6 +17,30 @@ #include "iris_platform_sm8650.h" #include "iris_platform_sm8750.h" =20 +const struct iris_firmware_desc iris_vpu30_p4_s6_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", +}; + +const struct iris_firmware_desc iris_vpu30_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu_buf_size, + .fwname =3D "qcom/vpu/vpu30_p4.mbn", +}; + +const struct iris_firmware_desc iris_vpu33_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .fwname =3D "qcom/vpu/vpu33_p4.mbn", +}; + +const struct iris_firmware_desc iris_vpu35_p4_gen2_desc =3D { + .firmware_data =3D &iris_hfi_gen2_data, + .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .fwname =3D "qcom/vpu/vpu35_p4.mbn", +}; + static struct iris_fmt iris_fmts_vpu3x_dec[] =3D { [IRIS_FMT_H264] =3D { .pixfmt =3D V4L2_PIX_FMT_H264, @@ -71,8 +95,7 @@ static const struct tz_cp_config tz_cp_config_vpu3[] =3D { * - inst_caps to platform_inst_cap_qcs8300 */ const struct iris_platform_data qcs8300_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu30_p4_s6_gen2_desc, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -89,7 +112,6 @@ const struct iris_platform_data qcs8300_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4_s6.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_qcs8300, @@ -102,8 +124,7 @@ const struct iris_platform_data qcs8300_data =3D { }; =20 const struct iris_platform_data sm8550_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu_buf_size, + .firmware_desc =3D &iris_vpu30_p4_gen2_desc, .vpu_ops =3D &iris_vpu3_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -120,7 +141,6 @@ const struct iris_platform_data sm8550_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu30_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -137,11 +157,9 @@ const struct iris_platform_data sm8550_data =3D { * - vpu_ops to iris_vpu33_ops * - clk_rst_tbl to sm8650_clk_reset_table * - controller_rst_tbl to sm8650_controller_reset_table - * - fwname to "qcom/vpu/vpu33_p4.mbn" */ const struct iris_platform_data sm8650_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_desc =3D &iris_vpu33_p4_gen2_desc, .vpu_ops =3D &iris_vpu33_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -160,7 +178,6 @@ const struct iris_platform_data sm8650_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu33_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, @@ -173,8 +190,7 @@ const struct iris_platform_data sm8650_data =3D { }; =20 const struct iris_platform_data sm8750_data =3D { - .firmware_data =3D &iris_hfi_gen2_data, - .get_vpu_buffer_size =3D iris_vpu33_buf_size, + .firmware_desc =3D &iris_vpu35_p4_gen2_desc, .vpu_ops =3D &iris_vpu35_ops, .icc_tbl =3D iris_icc_info_vpu3x, .icc_tbl_size =3D ARRAY_SIZE(iris_icc_info_vpu3x), @@ -191,7 +207,6 @@ const struct iris_platform_data sm8750_data =3D { .opp_clk_tbl =3D iris_opp_clk_table_vpu3x, /* Upper bound of DMA address range */ .dma_mask =3D 0xe0000000 - 1, - .fwname =3D "qcom/vpu/vpu35_p4.mbn", .inst_iris_fmts =3D iris_fmts_vpu3x_dec, .inst_iris_fmts_size =3D ARRAY_SIZE(iris_fmts_vpu3x_dec), .inst_caps =3D &platform_inst_cap_sm8550, diff --git a/drivers/media/platform/qcom/iris/iris_probe.c b/drivers/media/= platform/qcom/iris/iris_probe.c index dd87504c2e67..d36f0c0e785b 100644 --- a/drivers/media/platform/qcom/iris/iris_probe.c +++ b/drivers/media/platform/qcom/iris/iris_probe.c @@ -251,7 +251,8 @@ static int iris_probe(struct platform_device *pdev) return core->irq; =20 core->iris_platform_data =3D of_device_get_match_data(core->dev); - core->iris_firmware_data =3D core->iris_platform_data->firmware_data; + core->iris_firmware_desc =3D core->iris_platform_data->firmware_desc; + core->iris_firmware_data =3D core->iris_firmware_desc->firmware_data; =20 core->ubwc_cfg =3D qcom_ubwc_config_get_data(); if (IS_ERR(core->ubwc_cfg)) --=20 2.47.3