Hi, On Wed, 05 Mar 2025 21:28:18 +0800 Alice Guo (OSS) wrote: > From: Peng Fan <peng....@nxp.com> > > This patch adds the command CLOCK_PARENT_SET that can be used to set the > parent of a clock. ARM SCMI Version 3.2 supports to change the parent of > a clock device. > > Signed-off-by: Peng Fan <peng....@nxp.com> > Signed-off-by: Alice Guo <alice....@nxp.com> > Reviewed-by: Ye Li <ye...@nxp.com> > --- > drivers/clk/clk_scmi.c | 20 ++++++++++++++++++++ > include/scmi_protocols.h | 19 +++++++++++++++++++ > 2 files changed, 39 insertions(+) > > diff --git a/drivers/clk/clk_scmi.c b/drivers/clk/clk_scmi.c > index e42d2032d4..84333cdd0c 100644 > --- a/drivers/clk/clk_scmi.c > +++ b/drivers/clk/clk_scmi.c > @@ -178,11 +178,31 @@ static int scmi_clk_probe(struct udevice *dev) > return 0; > } > > +static int scmi_clk_set_parent(struct clk *clk, struct clk *parent) > +{ > + struct scmi_clk_parent_set_in in = { > + .clock_id = clk->id, > + .parent_clk = parent->id, > + }; > + struct scmi_clk_parent_set_out out; > + struct scmi_msg msg = SCMI_MSG_IN(SCMI_PROTOCOL_ID_CLOCK, > + SCMI_CLOCK_PARENT_SET, > + in, out); > + int ret; > + > + ret = devm_scmi_process_msg(clk->dev, &msg); > + if (ret < 0) > + return ret; > + > + return scmi_to_linux_errno(out.status); > +} > + > static const struct clk_ops scmi_clk_ops = { > .enable = scmi_clk_enable, > .disable = scmi_clk_disable, > .get_rate = scmi_clk_get_rate, > .set_rate = scmi_clk_set_rate, > + .set_parent = scmi_clk_set_parent, > }; > > U_BOOT_DRIVER(scmi_clock) = { > diff --git a/include/scmi_protocols.h b/include/scmi_protocols.h > index 34f272c448..0d8c177025 100644 > --- a/include/scmi_protocols.h > +++ b/include/scmi_protocols.h > @@ -737,6 +737,7 @@ enum scmi_clock_message_id { > SCMI_CLOCK_RATE_SET = 0x5, > SCMI_CLOCK_RATE_GET = 0x6, > SCMI_CLOCK_CONFIG_SET = 0x7, > + SCMI_CLOCK_PARENT_SET = 0xD > add a comma to facilitate extending the enum definition
Lothar Waßmann