From nobody Thu Apr 2 23:55:47 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 2C583356A12 for ; Mon, 2 Mar 2026 10:49:42 +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=1772448584; cv=none; b=qvwIV5byPNdz4ieTb/zpwmI/nE3GhmrVFoINXV8Z4yQGWym/L0RHnJbT9N/olG+ZsVKI2do77LGBtQo0FTRWhtMVUT06/jyfqlMKxOXWTlWKJdWDUJpOtqslrJlj8n8nBYJbqnb57ZvV7QcGoDGO99oY2C+M4EpnVj5V7EeeYIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772448584; c=relaxed/simple; bh=LQOEsE4EW+va2w/H5UXNAJZLOMqN0BK3R/N17G2bTRo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YpFlTV3GW/G5Ryfdv7U1i4gS7517GJczF4XT4PsDG+J0cQrb2Wk1ulyhXsFWGls88hf9Qdc0NbZiX5uNMlReFJgM5ds+/vq/kBKN1WFht23FryFH6lzWQGXzDOQ/q/n7vpNozwpXT0EjBj34rD6MNmA1amIltiQOgvD0q8MLPEg= 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=Q/TO6t5s; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=fkPlxb78; 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="Q/TO6t5s"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="fkPlxb78" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6228HLNl2472662 for ; Mon, 2 Mar 2026 10:49:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= vOpykfayt0+7TDme6wXpTLrfIkBegFZJ5vdJl8DJV6A=; b=Q/TO6t5sgRiUMt+B NqIomCcMpnJkcwv9QCfwJ9IKyvCE2SVHNymKaexIU2V8hlQ4CeZF0FU1yJVEVe50 8okcj4Bgrk0FQxKo4l/EQiZ22fcOZrsx4mTiznwKD2XMxTPrjZacHfAcbfigU0WN Tc6fWG5gt69qcSDInyqML6YyW/tUC5kMfDKfVnmtCc6z8+6zfwRQb/8dzvoUaFsH uV38+rJ8QM5tnGlqFLbHqqh3Zw+jKqWj1s5NmngxDG5Q1NCAlTruJ7aueMwBGrAI Fs+5uljavFbrBSmo6+FK2fl3TWhdqdbW9ilUaYqb6G5yB+h4WS3Fk9tInpoMhcsK UKxARg== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cksfd585d-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Mar 2026 10:49:41 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-824bf5fe8cbso1862559b3a.1 for ; Mon, 02 Mar 2026 02:49:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772448580; x=1773053380; 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=vOpykfayt0+7TDme6wXpTLrfIkBegFZJ5vdJl8DJV6A=; b=fkPlxb78mub3qiqpOrAwrps1y22uXMGJASE07dnV8msBU1Kh9NJMdWztt3b0cZUc+h aqDCCC/ou0YXAH9NemmDoZyCkMi2WTNlLs2luNpVbJx+9CI6clZN47++EyKFaZNvPcjw 1qI5poEqrRs/O+lJZnNYF0J67AXp+h1/mm4hIbGqGVAqFkAlkZ5yvihWVeEonh03f9f7 is2YnaQJzOYFBAH6MxHsvcXYMvCz2hy6rvNwun+F8mcOuiCHiVQnso7vsWROi+9GniHJ WVWlcdX+Eyquedg6ZPA84lJqdY5YInuezsqlF38zeKL7uTXNhB0dIrdTNVeXeAwbFE+1 1OoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772448580; x=1773053380; 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=vOpykfayt0+7TDme6wXpTLrfIkBegFZJ5vdJl8DJV6A=; b=v3fuP6aVujUxeIGQQJtQCZR7fIXZN69+OrHlp10k9QfMHroorOv27BRpX+e/KL4gEc GpmSjT+wKbIT67UaOaK5n02bqJDkZGXj1Uiug/yPktWQM7zcHsPG9Sl9sGdsz1HAPYpm jfVnFC/MNtRGDuL9b2yIhw853dO2zJ/ibDX2yWPvcrBxjmo2k0In75spegc7aWawW24C 9O3E3HS+uzIZOsoFrFxK6xcFWZKlR/pnM9QMQF0cfdSh/zkqzI7w7F3QNWn3itrbS7ap YZCqaFjUWuzIIOdmEKR/5NB48GRVGCbEj3MzIcU6fUYnbSvlsFQGNB9mYhHnap3n1YRd vV7g== X-Forwarded-Encrypted: i=1; AJvYcCUX0iidRTwQtsyW0HuDHXR88OqTR1M8v7Pu0dwCLLcq7xxjPj2b0/2yaGYf2Bdl69KDH4KLBH3Q8CxIYa4=@vger.kernel.org X-Gm-Message-State: AOJu0YwT44iqkGEmiNyigP0jp1oJj3WFtcR2OkSJMO2/4hM8Aj2gHbMy l7A9+Dc8+RE+2l4yy9phD2LUEIRi+cYo7IBfMo6btRqDfdBrb/43M1gk8uYzA8jujnCuCy5dJ+2 SAuHh4yPF8J2ElEtkwM1IsxfxkTgnIIuY1mGFXf7fIKVYsoXXu4Ro0GfNavaBPF1qGxg= X-Gm-Gg: ATEYQzypej7q2q1DOmQcYpw1/IGDl939iQ3nLKKWgNB0lsuIf66heOzVbqFhKctfXDJ BDI5AhDQhaTCACwGJggjVcmHFf+1run7LZTdoycAGdEEDm2P6SRMWN30NdyYzmTT4ZoPwkEUelZ W2ftzyWnTnGy0l1ruO+SZ4d/cAp61zIdaAxmFJhzLaifLc/midgD9cdvZkAgwgoKKRy/nlSqx+Q Pd1Y9T6SHYY6BuGR8Jk0Nxsmvk03CJLbfdqA5EdXT478qkrhwVSEitFGQECXB8+209t6gOSmHCF BPJPqeGagm2oZM1+OqC8+FpK9Q7l13SvHUtkyU/C2JOjGQOg30LuaLui3t/PfmflBqPOXYN4FNK AfGPdhHdSzNLItAR/ZBrxxKWWOkwI/h30SCN0hBN1K6D6TnIOL/MuhtcF9ac= X-Received: by 2002:a05:6a00:ad86:b0:827:282e:cb1d with SMTP id d2e1a72fcca58-8274da24aa9mr8940005b3a.66.1772448579398; Mon, 02 Mar 2026 02:49:39 -0800 (PST) X-Received: by 2002:a05:6a00:ad86:b0:827:282e:cb1d with SMTP id d2e1a72fcca58-8274da24aa9mr8939975b3a.66.1772448578906; Mon, 02 Mar 2026 02:49:38 -0800 (PST) Received: from hu-arakshit-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8273a054b49sm12225956b3a.53.2026.03.02.02.49.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 02:49:38 -0800 (PST) From: Abhinaba Rakshit Date: Mon, 02 Mar 2026 16:19:13 +0530 Subject: [PATCH v7 1/3] soc: qcom: ice: Add OPP-based clock scaling support for ICE 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: <20260302-enable-ufs-ice-clock-scaling-v7-1-669b96ecadd8@oss.qualcomm.com> References: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> In-Reply-To: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> To: Herbert Xu , "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Neeraj Soni Cc: linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, Abhinaba Rakshit X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: rlgduCoz2stUuIGrwGjexmoFcWqxsCfL X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzAyMDA4OCBTYWx0ZWRfXwuvseIevwMAs gGpcojbV+bgvfHiB0gQlo2x8tfFndEdFXi2I4Se8lh9FlbpodITS6ChyDdHBBU9+PzGjlQjTm49 6TaqVTiAHPaGk1+Ha4QSV+6rRVBNKjvrgg7sRkWHqBrZSm0yWvSomrtL9S+04O/eNCSvpgmY+62 ws40TRYoa70xKUBwT6DQvYmrxkzGPBPoYFyBfNqLYD2+QDEXNn3GN81fpAykv0kl6d7RSw2BBo2 ik6Z//fBvm5sDbM09y5NfcEmnq5mrBsHoOaDEJUZYlZrcZHPHEj4IuxE2q3WmWSbIYGh/j9OcfF WlJMhgAb5wymQjobEEEgyF2YWURnfnbtTiqNqPVMwB3b59v6uI1jUTNipqsLeF5dRJQ7rL3gNHK C6NhR67xxs80cNZhqbIKn/IGkRFavVk1T9hPZvkt/c39yyciAYzRvJTrQwkdKdHhCPcg68tDAGH GM4TEduOVJuB5AKdkPQ== X-Authority-Analysis: v=2.4 cv=HKDO14tv c=1 sm=1 tr=0 ts=69a56b45 cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=qcZjKvIi6tDtp92yFeoA:9 a=QEXdDO2ut3YA:10 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: rlgduCoz2stUuIGrwGjexmoFcWqxsCfL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-02_03,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 phishscore=0 impostorscore=0 adultscore=0 spamscore=0 bulkscore=0 suspectscore=0 priorityscore=1501 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603020088 Register optional operation-points-v2 table for ICE device during device probe. Introduce clock scaling API qcom_ice_scale_clk which scale ICE core clock based on the target frequency provided and if a valid OPP-table is registered. Use round_ceil passed to decide on the rounding of the clock freq against OPP-table. Disable clock scaling if OPP-table is not registered. When an ICE-device specific OPP table is available, use the PM OPP framework to manage frequency scaling and maintain proper power-domain constraints. Also, ensure to drop the votes in suspend to prevent power/thermal retention. Subsequently restore the frequency in resume from core_clk_freq which stores the last ICE core clock operating frequency. Signed-off-by: Abhinaba Rakshit --- drivers/soc/qcom/ice.c | 82 ++++++++++++++++++++++++++++++++++++++++++++++= ++-- include/soc/qcom/ice.h | 2 ++ 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c index b203bc685cadd21d6f96eb1799963a13db4b2b72..7976a18d9a4cda1ad6b62b66ce0= 11e244d0f6856 100644 --- a/drivers/soc/qcom/ice.c +++ b/drivers/soc/qcom/ice.c @@ -16,6 +16,7 @@ #include #include #include +#include =20 #include =20 @@ -111,6 +112,8 @@ struct qcom_ice { bool use_hwkm; bool hwkm_init_complete; u8 hwkm_version; + unsigned long core_clk_freq; + bool has_opp; }; =20 static bool qcom_ice_check_supported(struct qcom_ice *ice) @@ -310,6 +313,10 @@ int qcom_ice_resume(struct qcom_ice *ice) struct device *dev =3D ice->dev; int err; =20 + /* Restore the ICE core clk freq */ + if (ice->has_opp && ice->core_clk_freq) + dev_pm_opp_set_rate(ice->dev, ice->core_clk_freq); + err =3D clk_prepare_enable(ice->core_clk); if (err) { dev_err(dev, "failed to enable core clock (%d)\n", @@ -324,6 +331,11 @@ EXPORT_SYMBOL_GPL(qcom_ice_resume); int qcom_ice_suspend(struct qcom_ice *ice) { clk_disable_unprepare(ice->core_clk); + + /* Drop the clock votes while suspend */ + if (ice->has_opp) + dev_pm_opp_set_rate(ice->dev, 0); + ice->hwkm_init_complete =3D false; =20 return 0; @@ -549,10 +561,54 @@ int qcom_ice_import_key(struct qcom_ice *ice, } EXPORT_SYMBOL_GPL(qcom_ice_import_key); =20 +/** + * qcom_ice_scale_clk() - Scale ICE clock for DVFS-aware operations + * @ice: ICE driver data + * @target_freq: requested frequency in Hz + * @round_ceil: when true, selects nearest freq >=3D @target_freq; + * otherwise, selects nearest freq <=3D @target_freq + * + * Selects an OPP frequency based on @target_freq and the rounding directi= on + * specified by @round_ceil, then programs it using dev_pm_opp_set_rate(), + * including any voltage or power-domain transitions handled by the OPP + * framework. Updates ice->core_clk_freq on success. + * + * Return: 0 on success; -EOPNOTSUPP if no OPP table; -EINVAL in-case of + * incorrect flags; or error from dev_pm_opp_set_rate()/OPP lookup. + */ +int qcom_ice_scale_clk(struct qcom_ice *ice, unsigned long target_freq, + bool round_ceil) +{ + unsigned long ice_freq =3D target_freq; + struct dev_pm_opp *opp; + int ret; + + if (!ice->has_opp) + return -EOPNOTSUPP; + + if (round_ceil) + opp =3D dev_pm_opp_find_freq_ceil(ice->dev, &ice_freq); + else + opp =3D dev_pm_opp_find_freq_floor(ice->dev, &ice_freq); + + if (IS_ERR(opp)) + return PTR_ERR(opp); + dev_pm_opp_put(opp); + + ret =3D dev_pm_opp_set_rate(ice->dev, ice_freq); + if (!ret) + ice->core_clk_freq =3D ice_freq; + + return ret; +} +EXPORT_SYMBOL_GPL(qcom_ice_scale_clk); + static struct qcom_ice *qcom_ice_create(struct device *dev, - void __iomem *base) + void __iomem *base, + bool is_legacy_binding) { struct qcom_ice *engine; + int err; =20 if (!qcom_scm_is_available()) return ERR_PTR(-EPROBE_DEFER); @@ -584,6 +640,26 @@ static struct qcom_ice *qcom_ice_create(struct device = *dev, if (IS_ERR(engine->core_clk)) return ERR_CAST(engine->core_clk); =20 + /* + * Register the OPP table only when ICE is described as a standalone + * device node. Older platforms place ICE inside the storage controller + * node, so they don't need an OPP table here, as they are handled in + * storage controller. + */ + if (!is_legacy_binding) { + /* OPP table is optional */ + err =3D devm_pm_opp_of_add_table(dev); + if (err && err !=3D -ENODEV) { + dev_err(dev, "Invalid OPP table in Device tree\n"); + return ERR_PTR(err); + } + engine->has_opp =3D (err =3D=3D 0); + + if (!engine->has_opp) + dev_info(dev, "ICE OPP table is not registered, please update your DT\n= "); + } + + engine->core_clk_freq =3D clk_get_rate(engine->core_clk); if (!qcom_ice_check_supported(engine)) return ERR_PTR(-EOPNOTSUPP); =20 @@ -628,7 +704,7 @@ static struct qcom_ice *of_qcom_ice_get(struct device *= dev) return ERR_CAST(base); =20 /* create ICE instance using consumer dev */ - return qcom_ice_create(&pdev->dev, base); + return qcom_ice_create(&pdev->dev, base, true); } =20 /* @@ -725,7 +801,7 @@ static int qcom_ice_probe(struct platform_device *pdev) return PTR_ERR(base); } =20 - engine =3D qcom_ice_create(&pdev->dev, base); + engine =3D qcom_ice_create(&pdev->dev, base, false); if (IS_ERR(engine)) return PTR_ERR(engine); =20 diff --git a/include/soc/qcom/ice.h b/include/soc/qcom/ice.h index 4bee553f0a59d86ec6ce20f7c7b4bce28a706415..4eb58a264d416e71228ed4b13e7= f53c549261fdc 100644 --- a/include/soc/qcom/ice.h +++ b/include/soc/qcom/ice.h @@ -30,5 +30,7 @@ int qcom_ice_import_key(struct qcom_ice *ice, const u8 *raw_key, size_t raw_key_size, u8 lt_key[BLK_CRYPTO_MAX_HW_WRAPPED_KEY_SIZE]); struct qcom_ice *devm_of_qcom_ice_get(struct device *dev); +int qcom_ice_scale_clk(struct qcom_ice *ice, unsigned long target_freq, + bool round_ceil); =20 #endif /* __QCOM_ICE_H__ */ --=20 2.34.1 From nobody Thu Apr 2 23:55:47 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 61C88359A60 for ; Mon, 2 Mar 2026 10:49:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772448587; cv=none; b=qSVTXA2MalibxxBGpTnhx/hkifvCoDZyvbRy6LzA33iWFs9efwh/wy+C4gLSRUftHWNp+OYAdZPCvITe6ABTbAUseR9JPbLnScGgJ8uZAQKWFI2L7X/9Xf3DNfSO+hYUMIvbEmtsiVVLoHLWkOE01oR9xqB7nKOb4zZtsI4WElw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772448587; c=relaxed/simple; bh=mfM49L/JlScpAh1lc54xaOqcbMJKZaGfYSNwP9nyX3A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=geuJax4Od/sEgthBtqOzRet2tNlPTIjz7DfQ38sPMDhowo78AhsY88tGhtAp6cok78e5esiCOwh57kRrDEEBYGkS699pqizYZkveZvVMKG1E3y3pn2hSElPoUGb6qOPSf2FPYCBm3W38dy7f7YzX/hMZxIaDq9Nj4XIZJ5MbBL8= 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=eypjoJ99; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Wu5y/lhY; 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="eypjoJ99"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Wu5y/lhY" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62285brb662344 for ; Mon, 2 Mar 2026 10:49:45 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= i0apK8FaEc2TmE79ix1tcZBYr5HjYS95uAnJxvBt9u8=; b=eypjoJ99/d3m/sQh stSQWc9+K8/8zThn+VYW3AaX5nIfxYtWBCKBsbFEzebg0hQ5zKFLRpZDUftH2Ys8 XGEZhiGXCZoNpiumxEOvDbEohmuR9t1kI+xO5JWYUYkVJ3ic/621UHPS8iTUCGH+ jNWwzFbBqwSsPj05OqV7Ok4feeL+pKvKxYPo24/WOznhDoBu0k0uQLPglaYODOvF zldvNJeEzb3HTr9RfJOZ/pUk5ycak5SJavjRHY9rWOGIG33mNdaWK1Tqu9BfDqVi gegqYEToTM5kwg2f9oG0MmSrY18+Q4QD86wZt6thapkLcKLDxDwQY2VXlhTB6P5d PPN78w== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cn6r2rnk1-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Mar 2026 10:49:45 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c70f2120583so2492249a12.3 for ; Mon, 02 Mar 2026 02:49:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772448585; x=1773053385; 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=i0apK8FaEc2TmE79ix1tcZBYr5HjYS95uAnJxvBt9u8=; b=Wu5y/lhYUipP1mT3fvSQj2EocdO7r65lGzNIVoISxIKgx8LRWLVX+M6ZSFBKcLjQ8n ykY1E8E8Q5X90jcSfGPejeHrY8n+Ix7OG85G/O52UNw0l7hmK+146mPxFAkFHBWY6Z4h hJHgH3x0PEQiHc4ordeOr7U79k9G9gD8ezsN+wdfX6s9uauSd4Vvp6D4tenizopuGJKQ 6toZmWDlG3wk1CGov7LgYNGEu9dtCjgMJkNg8oqNX4/3VyA39HRVK14uWmz7A8VE2Fzj JyPCbisHcWuuhKxi6zUjDsNst5C9fVbLrCnfYRb1M6Ct0CY3osJJkHF2Buvw4CYJLDjB YFJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772448585; x=1773053385; 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=i0apK8FaEc2TmE79ix1tcZBYr5HjYS95uAnJxvBt9u8=; b=regcjmOvAzB7uroAebBX3ZcEHp099No33LEa69iuHKJWAFQkf9eVygVD53r/UoLCQh dBLXwvqk/zfYJi+9pidyNW0r/2BKmLANm45pWclJsOL9JRk/hUCIn+Xe9PUFrre5kxjK 4FHt2meh/QpG0cHByH851ikc+RF9titLbYPcdRqGg0AtPSXnVC9GJLY5ejBid8knCxNr 1zkYB5s+X+aPjDR4ZhEqizIrvWiXRYnLUIAC9GzPlSw2MrJt3HH6Zlz368nNfEb7iFQZ /eVWVsAnD1LIfGgaBdsfJcEG1FquiGEXzKtQWtzni82jId4SMuV7IJAP54BQ3lw0hW8s vgYA== X-Forwarded-Encrypted: i=1; AJvYcCXbQDW/ksdcmoVQXuNQS+u6fGHgKzWmqNYSOj1lkjSsWAyVGft+BJXpX1vNteMS6fMf5dyyhqWww505ZGc=@vger.kernel.org X-Gm-Message-State: AOJu0YwhbpGuJJHrgbtyjWyrgYEhw99VylzY2tWY7lU9AvERM11yoLfm J5bHAQOr5BocZmftggwROkvnbPUCgHoMlaS/uNbfIO29hvrFSDH8w3URbZgzEbelHW0ESMWizu1 7CAuubVRBMH6q0rQSmeFM55OuDj0KN2g4YwR/hlUwdcdSFaT8sTAGJSebRlvyEZ+r/ik= X-Gm-Gg: ATEYQzzyX8AK+SKtvMtfIIagOGqeq8vhkbq2c4QyE+VES2RYQcqgmS9pd5Sxm4uaLmB 5hyjFOCR4JpkyyaJvqXEmMgyByYfV8iRottnmXlZoutWeESX7Hlkyj0yFOgej5BdwRpw/AMbzNE VJJdas3kFY4Kz/gnEMz6oIOFHLZxGPCqekoYezpBrY21ak0/irf5EqLVWeSL+ml1U+9ebZq4Seq ycAQYpYuPoWV3z48hA45xu5UXRLBAD9WXGiocDRPiUfhcOwnwqdHrGqNOqI9XrgOZKSZngTURie vnN/94BrqxqBwhziDv6JwZWSMLNqrrpib4XG1qB1WPrLxb7n0CatTBnJP3fGsxmQNzHBezFBXEL ZSxBDooXquAJTNH2VxTVNaHXHz8LwY2nF2PG6Kw5e4gTPmtu36e4eVU73Lno= X-Received: by 2002:a05:6a00:b42:b0:824:9ffc:256c with SMTP id d2e1a72fcca58-8274da07aaemr10122576b3a.43.1772448584801; Mon, 02 Mar 2026 02:49:44 -0800 (PST) X-Received: by 2002:a05:6a00:b42:b0:824:9ffc:256c with SMTP id d2e1a72fcca58-8274da07aaemr10122554b3a.43.1772448584299; Mon, 02 Mar 2026 02:49:44 -0800 (PST) Received: from hu-arakshit-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8273a054b49sm12225956b3a.53.2026.03.02.02.49.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 02:49:43 -0800 (PST) From: Abhinaba Rakshit Date: Mon, 02 Mar 2026 16:19:14 +0530 Subject: [PATCH v7 2/3] ufs: host: Add ICE clock scaling during UFS clock changes 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: <20260302-enable-ufs-ice-clock-scaling-v7-2-669b96ecadd8@oss.qualcomm.com> References: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> In-Reply-To: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> To: Herbert Xu , "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Neeraj Soni Cc: linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, Abhinaba Rakshit X-Mailer: b4 0.14.2 X-Proofpoint-GUID: HQhOyJnBqbJ2QY55rOBg-0RCcys4g2K2 X-Proofpoint-ORIG-GUID: HQhOyJnBqbJ2QY55rOBg-0RCcys4g2K2 X-Authority-Analysis: v=2.4 cv=Hpp72kTS c=1 sm=1 tr=0 ts=69a56b49 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=-RVjIYUuWhs3u9hRN0oA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzAyMDA4OSBTYWx0ZWRfX7zRNznUbQO4E 2dKr8veLy2kDoXOUrPTZFNB9QJEPtKuJauC8tXTdqBO/TkLmbXJOrv/1tWCUU84v+RVLuD/A8lz GR4uU+xt+wLXQa2+ZdgGsv1mZzzMu9vGChM/Zi3tFLx+xqNdnM58xNwf9OwBT/dutEM9GnTelIT 6WqatOWKqeGnUF4J1uZDoRayxRwrhpAbHz80eHIO1i7Si/X+CToHMfbEUkN3gCkNCGfdVopxOIi ZhFH9BaKHj7sT//n1DNXobM8os8iEeBWJCi7PVCnFsrPY2RJS0WmUxC3xW6ct7CwjLjAyDsvlMz mdARyVbh6OshFJZ8W0XofvwiRe1AgBPiPbuJe4SlDGGONz8AYJnbfBV1MfVtkHImX4q0fy0oT1D ZqSKz8A5EU4YIBXjZt0R7snqveRs4Kj6uVkCd8o8poblCJsS8Eky6FG2z/oLl8u7ou4w0gHSque 3fwluNyOuq6ZERmqV5A== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-02_03,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 impostorscore=0 phishscore=0 priorityscore=1501 adultscore=0 bulkscore=0 malwarescore=0 clxscore=1015 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603020089 Implement ICE (Inline Crypto Engine) clock scaling in sync with UFS controller clock scaling. This ensures that the ICE operates at an appropriate frequency when the UFS clocks are scaled up or down, improving performance and maintaining stability for crypto operations. For scale_up operation ensure to pass ~round_ceil (round_floor) and vice-versa for scale_down operations. Incase of OPP scaling is not supported by ICE, ensure to not prevent devfreq for UFS, as ICE OPP-table is optional. Acked-by: Manivannan Sadhasivam Signed-off-by: Abhinaba Rakshit --- drivers/ufs/host/ufs-qcom.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/drivers/ufs/host/ufs-qcom.c b/drivers/ufs/host/ufs-qcom.c index 8d119b3223cbdaa3297d2beabced0962a1a847d5..776444f46fe5f00f947e4b0b4df= e6d64e2ad2150 100644 --- a/drivers/ufs/host/ufs-qcom.c +++ b/drivers/ufs/host/ufs-qcom.c @@ -305,6 +305,15 @@ static int ufs_qcom_ice_prepare_key(struct blk_crypto_= profile *profile, return qcom_ice_prepare_key(host->ice, lt_key, lt_key_size, eph_key); } =20 +static int ufs_qcom_ice_scale_clk(struct ufs_qcom_host *host, unsigned lon= g target_freq, + bool round_ceil) +{ + if (host->hba->caps & UFSHCD_CAP_CRYPTO) + return qcom_ice_scale_clk(host->ice, target_freq, round_ceil); + + return 0; +} + static const struct blk_crypto_ll_ops ufs_qcom_crypto_ops =3D { .keyslot_program =3D ufs_qcom_ice_keyslot_program, .keyslot_evict =3D ufs_qcom_ice_keyslot_evict, @@ -339,6 +348,12 @@ static void ufs_qcom_config_ice_allocator(struct ufs_q= com_host *host) { } =20 +static int ufs_qcom_ice_scale_clk(struct ufs_qcom_host *host, unsigned lon= g target_freq, + bool round_ceil) +{ + return 0; +} + #endif =20 static void ufs_qcom_disable_lane_clks(struct ufs_qcom_host *host) @@ -1646,8 +1661,10 @@ static int ufs_qcom_clk_scale_notify(struct ufs_hba = *hba, bool scale_up, else err =3D ufs_qcom_clk_scale_down_post_change(hba, target_freq); =20 + if (!err) + err =3D ufs_qcom_ice_scale_clk(host, target_freq, !scale_up); =20 - if (err) { + if (err && err !=3D -EOPNOTSUPP) { ufshcd_uic_hibern8_exit(hba); return err; } --=20 2.34.1 From nobody Thu Apr 2 23:55:47 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 712F7359A66 for ; Mon, 2 Mar 2026 10:49:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772448593; cv=none; b=CPb56yQ6bkt3yLj65AjlKcMxRdZwIfTBj8qSdmqejCB/wMRHZTNJ0yQx1uRr5UCuBiOHv0QKjwGEvBrfhlWhvncPKLYrulEx75eckcGUEwzUN0AnL6UuLx6gB1L9wmImXcawCgEshc69tJ2fM+DYUMtCJchr9s/7K71d3gtl9Fw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772448593; c=relaxed/simple; bh=tV2XKwtZB21b/+DGFlVdQBnOLHKaB8Bee2EUNXJwBb4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Dpgoq6ATGuovTAZPppqZ2KLClVhX2B23ylpsjTCLG5y7Hv/JI/n3akQuZLh4/1SqU5Ai26DhwVw82OnbKMGAk90pL5/fhkWaHXevUCHS9hw3K1mUHIlWgJj2ty8Qdgs7zhMBT2zu8O96eZhRLUxQUbKGAPIdNBWMEnk8U9siEQw= 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=N7tR3bi5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=QpDWJvUs; 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="N7tR3bi5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="QpDWJvUs" 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 6229EnK43630795 for ; Mon, 2 Mar 2026 10:49:51 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= 1iZsdguDErODmBIQ+5meyHtMgbiaL6kRcm9eWC3B+M0=; b=N7tR3bi5aTTbex3N 1d/VEdOMvGltqw9SluqlBHJ60MHqzWGBNWW+YYQDFaWIsCl5sXQsJnMjElpdXvej md1uVC/XZhRKr5QpYWcn1BvcVd7P8THXc/uKjHiFukOh7J19pdCiObuko4hfddAv o2giYjdWlXrfgx8sG9LZJ4AdVgppTsAqbr8jyHlfEqiRUMeigcQ4aqFJ9DKzgBIn yZFbkTjoxK+qKvt8g9RTTZWilKvkkdzLV6JoxS2Y6bGOLtZ6s8gfa/+x8O8Uy2OC +Edo03efNLth57vAPlWGcPEfaY77pz3os/yv3OBiSn+2MJ13hJKwVQoM2iECXbZd tfAw3w== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cn7rhrb1j-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 02 Mar 2026 10:49:51 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-8274dbdbadcso10505988b3a.0 for ; Mon, 02 Mar 2026 02:49:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772448590; x=1773053390; 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=1iZsdguDErODmBIQ+5meyHtMgbiaL6kRcm9eWC3B+M0=; b=QpDWJvUs3+gvS5wKYvwJ3v7o398bx86vgManFKjg8rHyz6/usEgGKB8jHuDAmC+ubN ODSluNPnZpcWNOfnOTE1vMijIng3ojox+FEfuubN4VCPWqrexaocFeA6YPNrNQIt6tB9 SiFgYB87vwgY+gxE/9fZrO6ciOGYeKeBAf70BuHkJvA6oF11plc+A7rNFErsXuIH451n W4a8ObUreGm/9Ks1VaxeiCtHGZ4Otoo2kz9kxNP4SNzwCr3FEkAKCld7CcFFX+RfQk14 1EO5FA7QS47qo92J7Jm+0ScbntxZrS4pg8IeHYkNWTPbjQUR3uClPSKrbR7F4csvsqpc MJpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772448590; x=1773053390; 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=1iZsdguDErODmBIQ+5meyHtMgbiaL6kRcm9eWC3B+M0=; b=rVZhOx4xw+czg7IVatlQeGUziRMKYU+V7kmtdHCZ89Kx9fvXhQ4QD6Ln3a79tLOo/O PEoXHw2B6fuG0CjRtLB8JsPis4aYNtGy2qwfuVtW24JJwc0e9rioxh7zfWkM7xQsZDBl 6ZoosEU+rHCIy3OQ9uogXfN80LhBVICR3Nhy+aiGhKQWrJZIt2wLu7EDgTJZ0xYdq2gX CEW2yLUZRNoBMkr2g2WfdAn+I47/O7bsIE3vE85Ln0a0AtPXBF7mkNB5PQjtN7xgDU3I 8bYgXFLD0WQS/kJKCmfKEtZjManlGsRBteZyp6ieCVTjgGVXkEufBOwM7vs8q3dAcDTL jl1g== X-Forwarded-Encrypted: i=1; AJvYcCXLeHXoq/sUF3HCjkyz5jd4RqZsS/W54N+IbrqH+r175BFpSKTQ2V87tFyvpSa2K93R4UtSU1c9Blg1Rwg=@vger.kernel.org X-Gm-Message-State: AOJu0YxYGs9YDCZzYbo5NjdPCY5ejihCscg5rOwmUqzKkOMM4GzHNjSi OsLCegHGhr2lNN/kDf32XdxCgB5cvSAKK/OjVcyubB+s7kv74sQVkkrSRevP8/QFt+cwM/uGB/S e7V4pSrBic4rW8/sArTKkUR35asgX9AwxVahFA6GMO2QmyIWrUUoncDks5x4HVhJ3YNU= X-Gm-Gg: ATEYQzwEzK3sDsJCrrkKoMhpZ3ZuIhZo6wIoUvINgoactDcZXTOgQ9qwhMJn47dvLzL 42xtIMjrHI1hhp7LQtVkX2pZYhQib9r+DpwweoHbJKrPaGzD53D5UcSAtWvo5xkBuAI4EwlWgvT 7HDYQtkLjrDx9MeAgZnlUZvm7ZAktJhOkovMSoMvqPZe+ICAMJwuhjkYC4LhnDoKL5pZ52lDV7V Ksc3PxoRbThIkFzXxr0y5K3zuEzBKAFNQvIv9hvWTwFVPVXLOALZzShIGvnplrXFFLjN4aRkZNP O/Yv1BvWWTNzpDK6N7f4ONr9CMlP8tdEJkzOip2h4iGAvcjEHfN7lXbgo/55eERj9VU4/DQk739 ThA4YqkFfZT4MMQa6fQsl91LuH53xtXuABe9Awx5u+wcFzJxBQmA11VjSqMw= X-Received: by 2002:a05:6a00:3390:b0:824:9451:c20e with SMTP id d2e1a72fcca58-8274da3a28fmr10253608b3a.59.1772448590372; Mon, 02 Mar 2026 02:49:50 -0800 (PST) X-Received: by 2002:a05:6a00:3390:b0:824:9451:c20e with SMTP id d2e1a72fcca58-8274da3a28fmr10253596b3a.59.1772448589947; Mon, 02 Mar 2026 02:49:49 -0800 (PST) Received: from hu-arakshit-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8273a054b49sm12225956b3a.53.2026.03.02.02.49.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 02:49:49 -0800 (PST) From: Abhinaba Rakshit Date: Mon, 02 Mar 2026 16:19:15 +0530 Subject: [PATCH v7 3/3] soc: qcom: ice: Set ICE clk to TURBO on probe 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: <20260302-enable-ufs-ice-clock-scaling-v7-3-669b96ecadd8@oss.qualcomm.com> References: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> In-Reply-To: <20260302-enable-ufs-ice-clock-scaling-v7-0-669b96ecadd8@oss.qualcomm.com> To: Herbert Xu , "David S. Miller" , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Andersson , Konrad Dybcio , Manivannan Sadhasivam , "James E.J. Bottomley" , "Martin K. Petersen" , Neeraj Soni Cc: linux-arm-msm@vger.kernel.org, linux-crypto@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-scsi@vger.kernel.org, Abhinaba Rakshit , Konrad Dybcio X-Mailer: b4 0.14.2 X-Proofpoint-ORIG-GUID: dMEMmvCW51IlcMvxpnSrlyyTm9CwbK5l X-Proofpoint-GUID: dMEMmvCW51IlcMvxpnSrlyyTm9CwbK5l X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzAyMDA4OCBTYWx0ZWRfX27ll+JEFM+Jx 41cRpeCqqdr6GBEa54VNVYS1v/uWRCI97wUFmanJruZ7qaMEKzpSpXlTpTcoOSYXnL1SnNiPDgU vxWYXh2LHkZAMRbLshtH+hbk6saCPuMxz/ZuBrUoO3ibKqfua3a1CatYh7SJIgUXiEzOfyztwrA 47GB4Ck2vrjHO17WdaRy8yetY5dcqOBuhiEP8GFduR4goVMZieuikNw7Jux33+6tiTQIZa4QQ5K h/jHGi6tAQflH/AI2UdyMcf9EVd+y/y9kPxbKlNXYABMwFy7jM+ig9LYSTeWXrNZQhvYaIaD9jk iUWgt+cUx39EjK+nb8+BjG8iaMPNRHs0/0sbo0/SWrte22Pi6A5rlJqLTL/wL0ACAf66Q0UaWXC hSybh1Oml3OmrBzlP+V4UMxlJXaJlsUTgeNJ2EAykq86e57gYm+iFFVccIdiQqN/U0WyuBZu/ix RQL3I7F4yeoaJ8iVfPQ== X-Authority-Analysis: v=2.4 cv=cLntc1eN c=1 sm=1 tr=0 ts=69a56b4f cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 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=u1bwIIJuvd_SIhYoViIA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-02_03,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 bulkscore=0 clxscore=1015 lowpriorityscore=0 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603020088 MMC controller lacks a clock scaling mechanism, unlike the UFS controller. By default, the MMC controller is set to TURBO mode during probe, but the ICE clock remains at XO frequency, leading to read/write performance degradation on eMMC. To address this, set the ICE clock to TURBO during probe to align it with the controller clock. This ensures consistent performance and avoids mismatches between the controller and ICE clock frequencies. For platforms where ICE is represented as a separate device, use the OPP framework to vote for TURBO mode, maintaining proper voltage and power domain constraints. Reviewed-by: Konrad Dybcio Signed-off-by: Abhinaba Rakshit --- drivers/soc/qcom/ice.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/drivers/soc/qcom/ice.c b/drivers/soc/qcom/ice.c index 7976a18d9a4cda1ad6b62b66ce011e244d0f6856..e8ee02a709574afa4ebb8e4395a= 8d899bf1d4976 100644 --- a/drivers/soc/qcom/ice.c +++ b/drivers/soc/qcom/ice.c @@ -659,6 +659,13 @@ static struct qcom_ice *qcom_ice_create(struct device = *dev, dev_info(dev, "ICE OPP table is not registered, please update your DT\n= "); } =20 + if (engine->has_opp) { + /* Vote for maximum clock rate for maximum performance */ + err =3D dev_pm_opp_set_rate(dev, INT_MAX); + if (err) + dev_warn(dev, "Failed boosting the ICE clk to TURBO\n"); + } + engine->core_clk_freq =3D clk_get_rate(engine->core_clk); if (!qcom_ice_check_supported(engine)) return ERR_PTR(-EOPNOTSUPP); --=20 2.34.1