Re: [PATCH v11 1/6] soc: qcom: ice: Add OPP-based clock scaling support for ICE

From: Konrad Dybcio

Date: Thu Jun 18 2026 - 09:02:18 EST


On 6/8/26 11:47 PM, Abhinaba Rakshit wrote:
> Register optional operation-points-v2 table for ICE device
> during device probe. Attach the OPP-table with only the ICE
> core clock. Since, dtbinding is on a transition phase to include
> iface clock and clock-names, attaching the opp-table to core clock
> remains optional such that it does not cause probe failures.
>
> 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. Clock scaling is
> disabled when a valid OPP-table is not registered.
>
> This ensures 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.
>
> Reviewed-by: Harshal Dev <harshal.dev@xxxxxxxxxxxxxxxx>
> Signed-off-by: Abhinaba Rakshit <abhinaba.rakshit@xxxxxxxxxxxxxxxx>
> ---

[...]

> @@ -335,6 +342,11 @@ int qcom_ice_suspend(struct qcom_ice *ice)
> {
> clk_disable_unprepare(ice->iface_clk);
> clk_disable_unprepare(ice->core_clk);
> +
> + /* Drop the clock votes while suspend */
> + if (ice->has_opp)
> + dev_pm_opp_set_rate(ice->dev, 0);

The PM core will quiesce the vote as the device suspends, this is
unnecessary. Similarly, the rate restore logic will become unnecessary.
Especially since dev_pm_opp_set_rate(0) does not actually do any rate
setting.

Konrad