diff options
| author | Kamlesh Gurudasani <[email protected]> | 2026-03-23 16:59:27 +0530 |
|---|---|---|
| committer | Peng Fan <[email protected]> | 2026-04-09 10:14:19 +0800 |
| commit | d113b295232dd6d819140169d7178d10d155c7e5 (patch) | |
| tree | 37c69c52f8e71ab0d3d234210fdaa64a1d0bef39 | |
| parent | a383c9689282269bb9687ec6c115de094c27fa67 (diff) | |
clk: scmi: Fix protocol version fetch for non-CCF platforms
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 <[email protected]>
Signed-off-by: Peng Fan <[email protected]>
| -rw-r--r-- | drivers/clk/clk_scmi.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c index ee237ed6337..12c7b1e8254 100644 --- a/drivers/clk/clk_scmi.c +++ b/drivers/clk/clk_scmi.c @@ -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; |
