From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
To: Abhinaba Rakshit <abhinaba.rakshit@oss.qualcomm.com>
Cc: Bjorn Andersson <andersson@kernel.org>,
Konrad Dybcio <konradybcio@kernel.org>,
Manivannan Sadhasivam <mani@kernel.org>,
"James E.J. Bottomley" <James.Bottomley@hansenpartnership.com>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
Neeraj Soni <neeraj.soni@oss.qualcomm.com>,
Herbert Xu <herbert@gondor.apana.org.au>,
"David S. Miller" <davem@davemloft.net>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-scsi@vger.kernel.org, linux-crypto@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH v5 2/4] soc: qcom: ice: Add OPP-based clock scaling support for ICE
Date: Mon, 16 Feb 2026 13:18:57 +0100 [thread overview]
Message-ID: <3ecb8d08-64cb-4fe1-bebd-1532dc5a86af@oss.qualcomm.com> (raw)
In-Reply-To: <aY7MidG/Kcrs83O9@hu-arakshit-hyd.qualcomm.com>
On 2/13/26 8:02 AM, Abhinaba Rakshit wrote:
> On Thu, Feb 12, 2026 at 12:30:00PM +0100, Konrad Dybcio wrote:
>> On 2/11/26 10:47 AM, Abhinaba Rakshit wrote:
>>> Register optional operation-points-v2 table for ICE device
>>> and aquire its minimum and maximum frequency during ICE
>>> device probe.
[...]
>>> + if (!ice->has_opp)
>>> + return -EOPNOTSUPP;
>>> +
>>> + /* Clamp the freq to max if target_freq is beyond supported frequencies */
>>> + if (ice->max_freq && target_freq >= ice->max_freq) {
>>> + ice_freq = ice->max_freq;
>>> + goto scale_clock;
>>> + }
>>> +
>>> + /* Clamp the freq to min if target_freq is below supported frequencies */
>>> + if (ice->min_freq && target_freq <= ice->min_freq) {
>>> + ice_freq = ice->min_freq;
>>> + goto scale_clock;
>>> + }
>>
>> The OPP framework won't let you overclock the ICE if this is what these checks
>> are about. Plus the clk framework will perform rounding for you too
>
> Right, maybe I can just add a check for 0 freq just to ensure the export API is
> not miss used.
> Something shown below:
>
> if (!target_freq)
> return -EINVAL;
>
> However, my main concern was for the corner cases, where:
> (target_freq > max && ROUND_CEIL)
> and
> (target_freq < min && ROUND_FLOOR)
> In both the cases, the OPP APIs will fail and the clock remains unchanged.
I would argue that's expected behavior, if the requested rate can not
be achieved, the "set_rate"-like function should fail
> Hence, I added the checks to make the API as generic/robust as possible.
AFAICT we generally set storage_ctrl_rate == ice_clk_rate with some slight
play, but the latter never goes above the FMAX of the former
For the second case, I'm not sure it's valid. For "find lowest rate" I would
expect find_freq_*ceil*(rate=0). For other cases of scale-down I would expect
that we want to keep the clock at >= (or ideally == )storage_ctrl_clk anyway
so I'm not sure _floor() is useful
>
> Please let me know, your thoughts.
>
>>> +
>>> + switch (flags) {
>>
>> Are you going to use these flags? Currently they're dead code
>
> I agree, currently they are not used.
> However, since its an export API, I want to keep the rounding FLAGS
> support as it a common to have rounding flags in clock scaling APIs,
> and to support any future use-cases as well.
I think you have a bit of a misconception - yes, this is an export API and
should be designed with the consumers in mind, but then it's consumed by
in-tree modules only ("what's not on the list doesn't exist"), so it's actually
generally *discouraged* (with varying levels of emphasis) to add any code that
is not immediately useful, as these functions can be updated at any point in
time down the line
Konrad
next prev parent reply other threads:[~2026-02-16 12:19 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 9:47 [PATCH v5 0/4] Enable ICE clock scaling Abhinaba Rakshit
2026-02-11 9:47 ` [PATCH v5 1/4] dt-bindings: crypto: ice: add operating-points-v2 property for QCOM ICE Abhinaba Rakshit
2026-02-11 22:08 ` Rob Herring (Arm)
2026-02-11 9:47 ` [PATCH v5 2/4] soc: qcom: ice: Add OPP-based clock scaling support for ICE Abhinaba Rakshit
2026-02-12 11:30 ` Konrad Dybcio
2026-02-13 7:02 ` Abhinaba Rakshit
2026-02-16 12:18 ` Konrad Dybcio [this message]
2026-02-18 19:02 ` Abhinaba Rakshit
2026-02-19 14:20 ` Konrad Dybcio
2026-02-20 7:33 ` Abhinaba Rakshit
2026-02-20 9:42 ` Konrad Dybcio
2026-02-20 11:15 ` Abhinaba Rakshit
2026-02-24 13:31 ` Konrad Dybcio
2026-02-13 7:32 ` Abhinaba Rakshit
2026-02-11 9:47 ` [PATCH v5 3/4] ufs: host: Add ICE clock scaling during UFS clock changes Abhinaba Rakshit
2026-02-11 9:47 ` [PATCH v5 4/4] soc: qcom: ice: Set ICE clk to TURBO on probe Abhinaba Rakshit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3ecb8d08-64cb-4fe1-bebd-1532dc5a86af@oss.qualcomm.com \
--to=konrad.dybcio@oss.qualcomm.com \
--cc=James.Bottomley@hansenpartnership.com \
--cc=abhinaba.rakshit@oss.qualcomm.com \
--cc=andersson@kernel.org \
--cc=conor+dt@kernel.org \
--cc=davem@davemloft.net \
--cc=devicetree@vger.kernel.org \
--cc=herbert@gondor.apana.org.au \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=mani@kernel.org \
--cc=martin.petersen@oracle.com \
--cc=neeraj.soni@oss.qualcomm.com \
--cc=robh@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox