On 11/8/25 9:02 AM, Peng Fan wrote:
Hello Peng,
Subject: Re: [PATCH v2 4/4] clk: scmi: Defer issue of
SCMI_CLOCK_ATTRIBUTES
I will change this to "clk->dev", otherwise there is CI failure.
What kind of CI failure ?
=> ut dm dm_test_scmi_clocks
Test: scmi_clocks: scmi.c
find_scmi_protocol_device() sandbox-scmi_agent scmi: Invalid SCMI device, agent
not found
test/dm/scmi.c:426, dm_test_scmi_clocks(): !ret_dev || ret_dev == 1088
Test: scmi_clocks: scmi.c (flat tree)
find_scmi_protocol_device() sandbox-scmi_agent scmi: Invalid SCMI device, agent
not found
test/dm/scmi.c:426, dm_test_scmi_clocks(): !ret_dev || ret_dev == 1088
Test 'scmi_clocks' failed 2 times
Tests run: 1, 11 ms, average: 11 ms, failures: 2
exit not allowed from main input shell.
It seems in the end, we were both right about the device parent. The
function has to use dev->parent, but not clk->dev->parent, but the
c->dev->parent resolved by clk_get_by_id() .
I sent a V3 with this change:
"
diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c
index 4e8e5a262c8..538ae054f4b 100644
--- a/drivers/clk/clk_scmi.c
+++ b/drivers/clk/clk_scmi.c
@@ -167,8 +167,8 @@ static int scmi_clk_gate(struct clk *clk, int enable)
static int scmi_clk_get_ctrl_flags(struct clk *clk, u32 *ctrl_flags)
{
- struct udevice *dev = clk->dev->parent;
struct clk_scmi *clkscmi;
+ struct udevice *dev;
u32 attributes;
struct clk *c;
int ret;
@@ -177,6 +177,8 @@ static int scmi_clk_get_ctrl_flags(struct clk *clk,
u32 *ctrl_flags)
if (ret)
return ret;
+ dev = c->dev->parent;
+
clkscmi = container_of(c, struct clk_scmi, clk);
if (!clkscmi->attrs_resolved) {
"