Thread (28 messages) 28 messages, 4 authors, 2024-12-25

Re: [PATCH v6 10/18] clk: imx: add hw API imx8m_anatop_get_clk_hw

From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
Date: 2024-12-24 12:19:05
Also in: imx, linux-clk, lkml

Hi Peng,

On Tue, Dec 24, 2024 at 3:17 AM Peng Fan [off-list ref] wrote:
On Sun, Dec 22, 2024 at 06:04:25PM +0100, Dario Binacchi wrote:
quoted
Get the hw of a clock registered by the anatop module. This function is
preparatory for future developments.

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>

---

(no changes since v5)

Changes in v5:
- Consider CONFIG_CLK_IMX8M{M,N,P,Q}_MODULE to fix compilation errors

Changes in v4:
- New

drivers/clk/imx/clk.c | 28 ++++++++++++++++++++++++++++
drivers/clk/imx/clk.h |  7 +++++++
2 files changed, 35 insertions(+)
diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c
index df83bd939492..9a21f233e105 100644
--- a/drivers/clk/imx/clk.c
+++ b/drivers/clk/imx/clk.c
@@ -128,6 +128,34 @@ struct clk_hw *imx_get_clk_hw_by_name(struct device_node *np, const char *name)
}
EXPORT_SYMBOL_GPL(imx_get_clk_hw_by_name);

+#if defined(CONFIG_CLK_IMX8MM) || defined(CONFIG_CLK_IMX8MM_MODULE) || \
+      defined(CONFIG_CLK_IMX8MN) || defined(CONFIG_CLK_IMX8MN_MODULE) || \
+      defined(CONFIG_CLK_IMX8MP) || defined(CONFIG_CLK_IMX8MP_MODULE) || \
+      defined(CONFIG_CLK_IMX8MQ) || defined(CONFIG_CLK_IMX8MQ_MODULE)
drop the guarding macros, then this could be reused by i.MX9.
quoted
+struct clk_hw *imx8m_anatop_get_clk_hw(int id)
how about change to
struct clk_hw *imx_anatop_get_clk_hw(int id, struct device_node *np)?
I designed this function so that the caller, i.e., the CCM driver,
would no longer need to
reference the anatop compatible in any way, but I agree with you that
it would be better
 to add the np parameter. Do you think it would then make sense to add
a phandle to the
 anatop node in the clk node?

clk: clock-controller@30380000 {
    compatible = "fsl,imx8mn-ccm";
    ...
    fsl,anatop = <&anatop>
}

So that we can call
anatop_np = of_parse_phandle(np, "fsl,anatop", 0);
instead of
anatop_np = of_find_compatible_node(NULL, NULL, "fsl,imx8mn-anatop");
This would require an additional patch to
Documentation/devicetree/bindings/clock/imx8m-clock.yaml,
but it would make the CCM driver code more generic.

What do you think? I’m waiting for your response before sending version 7.

Thanks and regards,
Dario




quoted
+{
+#if defined(CONFIG_CLK_IMX8MQ) || defined(CONFIG_CLK_IMX8MQ_MODULE)
+      const char *compatible = "fsl,imx8mq-anatop";
+#else
+      const char *compatible = "fsl,imx8mm-anatop";
+#endif
+      struct device_node *np;
+      struct of_phandle_args args;
+      struct clk_hw *hw;
+
+      np = of_find_compatible_node(NULL, NULL, compatible);
Then no need to find the compatible for every function call.
quoted
+      args.np = np;
+      args.args_count = 1;
+      args.args[0] = id;
+      of_node_put(np);
+
Thanks,
Peng


-- 

Dario Binacchi

Senior Embedded Linux Developer

dario.binacchi@amarulasolutions.com

__________________________________


Amarula Solutions SRL

Via Le Canevare 30, 31100 Treviso, Veneto, IT

T. +39 042 243 5310
info@amarulasolutions.com

www.amarulasolutions.com
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help