Re: [PATCH v7 06/19] clk: scmi: add the command CLOCK_PARENT_SET

Lothar Waßmann
2025-03-06T05:09:18Z

Hi,

On Wed, 05 Mar 2025 21:28:18 +0800 Alice Guo (OSS) wrote:
> From: Peng Fan <peng.fan@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.fan@nxp.com>
> Signed-off-by: Alice Guo <alice.guo@nxp.com>
> Reviewed-by: Ye Li <ye.li@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