On 11/3/25 9:33 AM, Peng Fan wrote: Hello Peng,
Ah, this makes perfect sense. This might also explain what Alice was seeing. I sent a V3 which should address that without any global variables.diff --git a/arch/arm/mach-imx/imx9/scmi/clock_scmi.c b/arch/arm/mach-imx/imx9/scmi/clock_scmi.c index fa15b5f8df9..fc1d5d77799 100644 --- a/arch/arm/mach-imx/imx9/scmi/clock_scmi.c +++ b/arch/arm/mach-imx/imx9/scmi/clock_scmi.c @@ -10,7 +10,7 @@ int imx_clk_scmi_enable(u32 clock_id, bool enable) { - struct scmi_clk_state_in in = { + struct scmi_clk_state_in_v1 in = { .clock_id = clock_id, .attributes = (enable) ? 1 : 0, }; diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c index a7d89f32cd7..f9e17c38cad 100644 --- a/drivers/clk/clk_scmi.c +++ b/drivers/clk/clk_scmi.c @@ -134,17 +134,29 @@ static int scmi_clk_get_attibute(struct udevice *dev, int clkid, char **name, static int scmi_clk_gate(struct clk *clk, int enable) { - struct scmi_clk_state_in in = { + struct scmi_clock_priv *priv = dev_get_priv(clk->dev->parent);This should be changed to find the protocol@14 device, because assigned-clock-parents could change the scmi clk parent.

