]> www.infradead.org Git - users/hch/misc.git/commitdiff
clk: scmi: Add duty cycle ops only when duty cycle is supported
authorJacky Bai <ping.bai@nxp.com>
Mon, 28 Jul 2025 07:04:46 +0000 (15:04 +0800)
committerStephen Boyd <sboyd@kernel.org>
Sat, 20 Sep 2025 05:50:20 +0000 (22:50 -0700)
For some of the SCMI based platforms, the oem extended config may be
supported, but not for duty cycle purpose. Skip the duty cycle ops if
err return when trying to get duty cycle info.

Signed-off-by: Jacky Bai <ping.bai@nxp.com>
Reviewed-by: Sudeep Holla <sudeep.holla@arm.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>
drivers/clk/clk-scmi.c

index d2408403283fc72f0cf902e65f4c08bcbc7b4b0b..c2f3ef4e58fe332f9903f7f954939ff34bc08aec 100644 (file)
@@ -349,6 +349,8 @@ scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_capable,
                    unsigned int atomic_threshold_us,
                    const struct clk_ops **clk_ops_db, size_t db_size)
 {
+       int ret;
+       u32 val;
        const struct scmi_clock_info *ci = sclk->info;
        unsigned int feats_key = 0;
        const struct clk_ops *ops;
@@ -370,8 +372,13 @@ scmi_clk_ops_select(struct scmi_clk *sclk, bool atomic_capable,
        if (!ci->parent_ctrl_forbidden)
                feats_key |= BIT(SCMI_CLK_PARENT_CTRL_SUPPORTED);
 
-       if (ci->extended_config)
-               feats_key |= BIT(SCMI_CLK_DUTY_CYCLE_SUPPORTED);
+       if (ci->extended_config) {
+               ret = scmi_proto_clk_ops->config_oem_get(sclk->ph, sclk->id,
+                                                SCMI_CLOCK_CFG_DUTY_CYCLE,
+                                                &val, NULL, false);
+               if (!ret)
+                       feats_key |= BIT(SCMI_CLK_DUTY_CYCLE_SUPPORTED);
+       }
 
        if (WARN_ON(feats_key >= db_size))
                return NULL;