[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z-FHt3mDyEBKpa8O@ketchup>
Date: Mon, 24 Mar 2025 11:53:27 +0000
From: Haylen Chu <heylenay@....org>
To: Alex Elder <elder@...cstar.com>, p.zabel@...gutronix.de,
mturquette@...libre.com, sboyd@...nel.org, dlan@...too.org
Cc: robh@...nel.org, krzk+dt@...nel.org, conor+dt@...nel.org,
guodong@...cstar.com, paul.walmsley@...ive.com, palmer@...belt.com,
aou@...s.berkeley.edu, spacemit@...ts.linux.dev,
devicetree@...r.kernel.org, linux-clk@...r.kernel.org,
linux-riscv@...ts.infradead.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH RESEND 2/7] clk: spacemit: define struct k1_ccu_data
On Fri, Mar 21, 2025 at 10:18:25AM -0500, Alex Elder wrote:
> Define a new structure type to be used for describing the OF match data.
> Rather than using the array of spacemit_ccu_clk structures for match
> data, we use this structure instead.
>
> Move the definition of the spacemit_ccu_clk structure closer to the top
> of the source file, and add the new structure definition below it.
>
> Shorten the name of spacemit_ccu_register() to be k1_ccu_register().
I've read your conversation about moving parts of the patch into the
clock series, I'm of course willing to :)
> Signed-off-by: Alex Elder <elder@...cstar.com>
> ---
> drivers/clk/spacemit/ccu-k1.c | 58 ++++++++++++++++++++++++++---------
> 1 file changed, 43 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/clk/spacemit/ccu-k1.c b/drivers/clk/spacemit/ccu-k1.c
> index 44db48ae71313..f7367271396a0 100644
> --- a/drivers/clk/spacemit/ccu-k1.c
> +++ b/drivers/clk/spacemit/ccu-k1.c
> @@ -129,6 +129,15 @@
> #define APMU_EMAC0_CLK_RES_CTRL 0x3e4
> #define APMU_EMAC1_CLK_RES_CTRL 0x3ec
>
> +struct spacemit_ccu_clk {
> + int id;
> + struct clk_hw *hw;
> +};
> +
> +struct k1_ccu_data {
> + struct spacemit_ccu_clk *clk; /* array with sentinel */
> +};
This is something like what I've dropped in v5 of the clock series so I
doubt whether it should be added back in clock series again, as at that
point there's no reason for an extra structure: Alex, is it okay for you
to keep the change in reset series?
...
> +static int k1_ccu_register(struct device *dev, struct regmap *regmap,
> + struct regmap *lock_regmap,
> + struct spacemit_ccu_clk *clks)
> {
> const struct spacemit_ccu_clk *clk;
> int i, ret, max_id = 0;
> @@ -1648,15 +1668,24 @@ static int spacemit_ccu_register(struct device *dev,
>
> clk_data->num = max_id + 1;
>
> - return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
> + ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_data);
> + if (ret)
> + dev_err(dev, "error %d adding clock hardware provider\n", ret);
This error message definitely should go in the clock series.
> + return ret;
> }
> static int k1_ccu_probe(struct platform_device *pdev)
> {
> struct regmap *base_regmap, *lock_regmap = NULL;
> struct device *dev = &pdev->dev;
> + const struct k1_ccu_data *data;
> int ret;
>
> + data = of_device_get_match_data(dev);
> + if (!data)
> + return -EINVAL;
Looking through the reset series, I don't see a reason that
of_device_get_match_data() could return NULL. This is also something
you've asked me to drop in v4 of the clock series, so I guess it isn't
necessary.
> base_regmap = device_node_to_regmap(dev->of_node);
> if (IS_ERR(base_regmap))
> return dev_err_probe(dev, PTR_ERR(base_regmap),
> @@ -1677,8 +1706,7 @@ static int k1_ccu_probe(struct platform_device *pdev)
> "failed to get lock regmap\n");
> }
>
> - ret = spacemit_ccu_register(dev, base_regmap, lock_regmap,
> - of_device_get_match_data(dev));
> + ret = k1_ccu_register(dev, base_regmap, lock_regmap, data->clk);
> if (ret)
> return dev_err_probe(dev, ret, "failed to register clocks\n");
For using ARRAY_SIZE() to simplify runtime code, it's mostly okay since
binding IDs are continuous 0-based integers. But I split the handling of
TWSI8 into another patch, which creates a hole in the range and breaks
the assumption. Do you think the TWSI8 commit should be merged back in
the clock driver one?
Best regards,
Haylen Chu
Powered by blists - more mailing lists