]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
clk: scmi: Fix protocol version fetch for non-CCF platforms
authorKamlesh Gurudasani <kamlesh@ti.com>
Mon, 23 Mar 2026 11:29:27 +0000 (16:59 +0530)
committerPeng Fan <peng.fan@nxp.com>
Thu, 9 Apr 2026 02:14:19 +0000 (10:14 +0800)
The SCMI clock protocol version was only being fetched when CLK_CCF
was enabled. On non-CCF platforms, the probe function returned early
without fetching the version, leaving priv->version as 0.

This caused issues because code paths like scmi_clk_gate() and
scmi_clk_get_permissions() depend on priv->version to determine
which protocol message format to use, even in non-CCF mode.

Fix this by moving the scmi_generic_protocol_version() call before
the CLK_CCF check, ensuring the version is fetched for both CCF and
non-CCF platforms.

Tested on am62lx_evm.

Fixes: ae7e0330ce22 ("clk: scmi: add compatibility with clock protocol 2.0")
Signed-off-by: Kamlesh Gurudasani <kamlesh@ti.com>
Signed-off-by: Peng Fan <peng.fan@nxp.com>
drivers/clk/clk_scmi.c

index ee237ed6337c71afb26993c84bdca69ebfa05e36..12c7b1e82542b3dc25eeacf5130443b453821586 100644 (file)
@@ -341,6 +341,12 @@ static int scmi_clk_probe(struct udevice *dev)
        if (ret)
                return ret;
 
+       ret = scmi_generic_protocol_version(dev, SCMI_PROTOCOL_ID_CLOCK, &priv->version);
+       if (ret) {
+               dev_dbg(dev, "%s: get SCMI clock management protocol version failed\n", __func__);
+               return ret;
+       }
+
        if (!CONFIG_IS_ENABLED(CLK_CCF))
                return 0;
 
@@ -352,12 +358,6 @@ static int scmi_clk_probe(struct udevice *dev)
        if (ret)
                return ret;
 
-       ret = scmi_generic_protocol_version(dev, SCMI_PROTOCOL_ID_CLOCK, &priv->version);
-       if (ret) {
-               dev_dbg(dev, "%s: get SCMI clock management protocol version failed\n", __func__);
-               return ret;
-       }
-
        clk_scmi_bulk = kzalloc(num_clocks * sizeof(*clk_scmi), GFP_KERNEL);
        if (!clk_scmi_bulk)
                return -ENOMEM;