* [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Nowdays, there are more and more requirements of building SoC specific
drivers as modules, such as Android GKI (generic kernel image), this
patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,
The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
various build options, and i.MX1/2/3 platforms now still ONLY support built-in
as they are rarely used now.
Changes since V4:
- add empty function of imx_register_uart_clocks() for MODULE build, then
all earlycon related clock handler can be built-out for MODULE;
- add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
- add COMPILE_TEST for ARMv8 platforms;
- keep using builtin_platform_driver() for i.MX8QXP clock driver.
Anson Huang (6):
clk: composite: Export clk_hw_register_composite()
clk: imx: Support module build for i.MX5/6/7 and vf610
clk: imx: Support building i.MX common clock driver as module
clk: imx: Add clock configuration for ARMv7 platforms
clk: imx8m: Support module build
clk: imx8qxp: Support building i.MX8QXP clock driver as module
drivers/clk/clk-composite.c | 1 +
drivers/clk/imx/Kconfig | 101 ++++++++++++++++++++++++++++++++-----
drivers/clk/imx/Makefile | 79 ++++++++++++++---------------
drivers/clk/imx/clk-composite-8m.c | 2 +
drivers/clk/imx/clk-cpu.c | 2 +
drivers/clk/imx/clk-frac-pll.c | 2 +
drivers/clk/imx/clk-gate2.c | 2 +
drivers/clk/imx/clk-imx5.c | 5 ++
drivers/clk/imx/clk-imx6q.c | 5 ++
drivers/clk/imx/clk-imx6sl.c | 5 ++
drivers/clk/imx/clk-imx6sll.c | 5 ++
drivers/clk/imx/clk-imx6sx.c | 5 ++
drivers/clk/imx/clk-imx6ul.c | 5 ++
drivers/clk/imx/clk-imx7d.c | 5 ++
drivers/clk/imx/clk-imx7ulp.c | 5 ++
drivers/clk/imx/clk-imx8mm.c | 4 ++
drivers/clk/imx/clk-imx8mn.c | 4 ++
drivers/clk/imx/clk-imx8mp.c | 4 ++
drivers/clk/imx/clk-imx8mq.c | 4 ++
drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++
drivers/clk/imx/clk-imx8qxp.c | 4 ++
drivers/clk/imx/clk-pll14xx.c | 5 ++
drivers/clk/imx/clk-sscg-pll.c | 2 +
drivers/clk/imx/clk-vf610.c | 5 ++
drivers/clk/imx/clk.c | 17 +++++--
drivers/clk/imx/clk.h | 6 +++
26 files changed, 231 insertions(+), 57 deletions(-)
--
2.7.4
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Nowdays, there are more and more requirements of building SoC specific
drivers as modules, such as Android GKI (generic kernel image), this
patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,
The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
various build options, and i.MX1/2/3 platforms now still ONLY support built-in
as they are rarely used now.
Changes since V4:
- add empty function of imx_register_uart_clocks() for MODULE build, then
all earlycon related clock handler can be built-out for MODULE;
- add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
- add COMPILE_TEST for ARMv8 platforms;
- keep using builtin_platform_driver() for i.MX8QXP clock driver.
Anson Huang (6):
clk: composite: Export clk_hw_register_composite()
clk: imx: Support module build for i.MX5/6/7 and vf610
clk: imx: Support building i.MX common clock driver as module
clk: imx: Add clock configuration for ARMv7 platforms
clk: imx8m: Support module build
clk: imx8qxp: Support building i.MX8QXP clock driver as module
drivers/clk/clk-composite.c | 1 +
drivers/clk/imx/Kconfig | 101 ++++++++++++++++++++++++++++++++-----
drivers/clk/imx/Makefile | 79 ++++++++++++++---------------
drivers/clk/imx/clk-composite-8m.c | 2 +
drivers/clk/imx/clk-cpu.c | 2 +
drivers/clk/imx/clk-frac-pll.c | 2 +
drivers/clk/imx/clk-gate2.c | 2 +
drivers/clk/imx/clk-imx5.c | 5 ++
drivers/clk/imx/clk-imx6q.c | 5 ++
drivers/clk/imx/clk-imx6sl.c | 5 ++
drivers/clk/imx/clk-imx6sll.c | 5 ++
drivers/clk/imx/clk-imx6sx.c | 5 ++
drivers/clk/imx/clk-imx6ul.c | 5 ++
drivers/clk/imx/clk-imx7d.c | 5 ++
drivers/clk/imx/clk-imx7ulp.c | 5 ++
drivers/clk/imx/clk-imx8mm.c | 4 ++
drivers/clk/imx/clk-imx8mn.c | 4 ++
drivers/clk/imx/clk-imx8mp.c | 4 ++
drivers/clk/imx/clk-imx8mq.c | 4 ++
drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++
drivers/clk/imx/clk-imx8qxp.c | 4 ++
drivers/clk/imx/clk-pll14xx.c | 5 ++
drivers/clk/imx/clk-sscg-pll.c | 2 +
drivers/clk/imx/clk-vf610.c | 5 ++
drivers/clk/imx/clk.c | 17 +++++--
drivers/clk/imx/clk.h | 6 +++
26 files changed, 231 insertions(+), 57 deletions(-)
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH V5 1/6] clk: composite: Export clk_hw_register_composite()
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:23 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Export clk_hw_register_composite() to support user built as module.
ERROR: modpost: "clk_hw_register_composite" [drivers/clk/imx/mxc-clk.ko]
undefined!
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
---
No change.
---
drivers/clk/clk-composite.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
index 7376f57..2ddb54f 100644
--- a/drivers/clk/clk-composite.c
+++ b/drivers/clk/clk-composite.c
@@ -328,6 +328,7 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
rate_hw, rate_ops, gate_hw,
gate_ops, flags);
}
+EXPORT_SYMBOL_GPL(clk_hw_register_composite);
struct clk_hw *clk_hw_register_composite_pdata(struct device *dev,
const char *name,
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 1/6] clk: composite: Export clk_hw_register_composite()
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Export clk_hw_register_composite() to support user built as module.
ERROR: modpost: "clk_hw_register_composite" [drivers/clk/imx/mxc-clk.ko]
undefined!
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Stephen Boyd <sboyd@kernel.org>
---
No change.
---
drivers/clk/clk-composite.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clk/clk-composite.c b/drivers/clk/clk-composite.c
index 7376f57..2ddb54f 100644
--- a/drivers/clk/clk-composite.c
+++ b/drivers/clk/clk-composite.c
@@ -328,6 +328,7 @@ struct clk_hw *clk_hw_register_composite(struct device *dev, const char *name,
rate_hw, rate_ops, gate_hw,
gate_ops, flags);
}
+EXPORT_SYMBOL_GPL(clk_hw_register_composite);
struct clk_hw *clk_hw_register_composite_pdata(struct device *dev,
const char *name,
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 2/6] clk: imx: Support module build for i.MX5/6/7 and vf610
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:23 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Add module author, description and license to support module build
for i.MX5/6/7 and vf610 SoCs.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
New patch.
---
drivers/clk/imx/clk-imx5.c | 5 +++++
drivers/clk/imx/clk-imx6q.c | 5 +++++
drivers/clk/imx/clk-imx6sl.c | 5 +++++
drivers/clk/imx/clk-imx6sll.c | 5 +++++
drivers/clk/imx/clk-imx6sx.c | 5 +++++
drivers/clk/imx/clk-imx6ul.c | 5 +++++
drivers/clk/imx/clk-imx7d.c | 5 +++++
drivers/clk/imx/clk-imx7ulp.c | 5 +++++
drivers/clk/imx/clk-vf610.c | 5 +++++
9 files changed, 45 insertions(+)
diff --git a/drivers/clk/imx/clk-imx5.c b/drivers/clk/imx/clk-imx5.c
index 01e079b..fcdd398 100644
--- a/drivers/clk/imx/clk-imx5.c
+++ b/drivers/clk/imx/clk-imx5.c
@@ -9,6 +9,7 @@
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -636,3 +637,7 @@ static void __init mx53_clocks_init(struct device_node *np)
imx_register_uart_clocks(uart_clks_mx50_mx53);
}
CLK_OF_DECLARE(imx53_ccm, "fsl,imx53-ccm", mx53_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX5 clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6q.c b/drivers/clk/imx/clk-imx6q.c
index ba33c79..46d31be 100644
--- a/drivers/clk/imx/clk-imx6q.c
+++ b/drivers/clk/imx/clk-imx6q.c
@@ -11,6 +11,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -990,3 +991,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6q, "fsl,imx6q-ccm", imx6q_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP i.MX6Q clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sl.c b/drivers/clk/imx/clk-imx6sl.c
index 0f647d1..f19d52f 100644
--- a/drivers/clk/imx/clk-imx6sl.c
+++ b/drivers/clk/imx/clk-imx6sl.c
@@ -6,6 +6,7 @@
#include <linux/clk.h>
#include <linux/clkdev.h>
#include <linux/err.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -455,3 +456,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6sl, "fsl,imx6sl-ccm", imx6sl_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP i.MX6SL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sll.c b/drivers/clk/imx/clk-imx6sll.c
index 8e8288b..4ec0dea 100644
--- a/drivers/clk/imx/clk-imx6sll.c
+++ b/drivers/clk/imx/clk-imx6sll.c
@@ -11,6 +11,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
@@ -376,3 +377,7 @@ static void __init imx6sll_clocks_init(struct device_node *ccm_node)
clk_set_rate(hws[IMX6SLL_CLK_AHB]->clk, 132000000);
}
CLK_OF_DECLARE_DRIVER(imx6sll, "fsl,imx6sll-ccm", imx6sll_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX6SLL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sx.c b/drivers/clk/imx/clk-imx6sx.c
index 89ba712..156163d 100644
--- a/drivers/clk/imx/clk-imx6sx.c
+++ b/drivers/clk/imx/clk-imx6sx.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -564,3 +565,7 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6sx, "fsl,imx6sx-ccm", imx6sx_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX6SX clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6ul.c b/drivers/clk/imx/clk-imx6ul.c
index 5dbb6a9..090b684 100644
--- a/drivers/clk/imx/clk-imx6ul.c
+++ b/drivers/clk/imx/clk-imx6ul.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -513,3 +514,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
}
CLK_OF_DECLARE(imx6ul, "fsl,imx6ul-ccm", imx6ul_clocks_init);
+
+MODULE_AUTHOR("Frank Li <frank.li@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX6UL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx7d.c b/drivers/clk/imx/clk-imx7d.c
index b2057bd..1837c42 100644
--- a/drivers/clk/imx/clk-imx7d.c
+++ b/drivers/clk/imx/clk-imx7d.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -906,3 +907,7 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
}
CLK_OF_DECLARE(imx7d, "fsl,imx7d-ccm", imx7d_clocks_init);
+
+MODULE_AUTHOR("Frank Li <frank.li@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX7D clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx7ulp.c b/drivers/clk/imx/clk-imx7ulp.c
index 634c0b6..d2eb80e 100644
--- a/drivers/clk/imx/clk-imx7ulp.c
+++ b/drivers/clk/imx/clk-imx7ulp.c
@@ -12,6 +12,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
@@ -279,3 +280,7 @@ static void __init imx7ulp_clk_smc1_init(struct device_node *np)
of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_data);
}
CLK_OF_DECLARE(imx7ulp_clk_smc1, "fsl,imx7ulp-smc1", imx7ulp_clk_smc1_init);
+
+MODULE_AUTHOR("A.s. Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX7ULP clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c
index 5129ef8..bf174ac 100644
--- a/drivers/clk/imx/clk-vf610.c
+++ b/drivers/clk/imx/clk-vf610.c
@@ -5,6 +5,7 @@
#include <linux/of_address.h>
#include <linux/clk.h>
+#include <linux/module.h>
#include <linux/syscore_ops.h>
#include <dt-bindings/clock/vf610-clock.h>
@@ -468,3 +469,7 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
}
CLK_OF_DECLARE(vf610, "fsl,vf610-ccm", vf610_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP VF610 clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 2/6] clk: imx: Support module build for i.MX5/6/7 and vf610
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Add module author, description and license to support module build
for i.MX5/6/7 and vf610 SoCs.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
New patch.
---
drivers/clk/imx/clk-imx5.c | 5 +++++
drivers/clk/imx/clk-imx6q.c | 5 +++++
drivers/clk/imx/clk-imx6sl.c | 5 +++++
drivers/clk/imx/clk-imx6sll.c | 5 +++++
drivers/clk/imx/clk-imx6sx.c | 5 +++++
drivers/clk/imx/clk-imx6ul.c | 5 +++++
drivers/clk/imx/clk-imx7d.c | 5 +++++
drivers/clk/imx/clk-imx7ulp.c | 5 +++++
drivers/clk/imx/clk-vf610.c | 5 +++++
9 files changed, 45 insertions(+)
diff --git a/drivers/clk/imx/clk-imx5.c b/drivers/clk/imx/clk-imx5.c
index 01e079b..fcdd398 100644
--- a/drivers/clk/imx/clk-imx5.c
+++ b/drivers/clk/imx/clk-imx5.c
@@ -9,6 +9,7 @@
#include <linux/clkdev.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -636,3 +637,7 @@ static void __init mx53_clocks_init(struct device_node *np)
imx_register_uart_clocks(uart_clks_mx50_mx53);
}
CLK_OF_DECLARE(imx53_ccm, "fsl,imx53-ccm", mx53_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX5 clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6q.c b/drivers/clk/imx/clk-imx6q.c
index ba33c79..46d31be 100644
--- a/drivers/clk/imx/clk-imx6q.c
+++ b/drivers/clk/imx/clk-imx6q.c
@@ -11,6 +11,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -990,3 +991,7 @@ static void __init imx6q_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6q, "fsl,imx6q-ccm", imx6q_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP i.MX6Q clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sl.c b/drivers/clk/imx/clk-imx6sl.c
index 0f647d1..f19d52f 100644
--- a/drivers/clk/imx/clk-imx6sl.c
+++ b/drivers/clk/imx/clk-imx6sl.c
@@ -6,6 +6,7 @@
#include <linux/clk.h>
#include <linux/clkdev.h>
#include <linux/err.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -455,3 +456,7 @@ static void __init imx6sl_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6sl, "fsl,imx6sl-ccm", imx6sl_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP i.MX6SL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sll.c b/drivers/clk/imx/clk-imx6sll.c
index 8e8288b..4ec0dea 100644
--- a/drivers/clk/imx/clk-imx6sll.c
+++ b/drivers/clk/imx/clk-imx6sll.c
@@ -11,6 +11,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
@@ -376,3 +377,7 @@ static void __init imx6sll_clocks_init(struct device_node *ccm_node)
clk_set_rate(hws[IMX6SLL_CLK_AHB]->clk, 132000000);
}
CLK_OF_DECLARE_DRIVER(imx6sll, "fsl,imx6sll-ccm", imx6sll_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX6SLL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6sx.c b/drivers/clk/imx/clk-imx6sx.c
index 89ba712..156163d 100644
--- a/drivers/clk/imx/clk-imx6sx.c
+++ b/drivers/clk/imx/clk-imx6sx.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -564,3 +565,7 @@ static void __init imx6sx_clocks_init(struct device_node *ccm_node)
imx_register_uart_clocks(uart_clks);
}
CLK_OF_DECLARE(imx6sx, "fsl,imx6sx-ccm", imx6sx_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawnguo@kernel.org>");
+MODULE_DESCRIPTION("NXP i.MX6SX clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx6ul.c b/drivers/clk/imx/clk-imx6ul.c
index 5dbb6a9..090b684 100644
--- a/drivers/clk/imx/clk-imx6ul.c
+++ b/drivers/clk/imx/clk-imx6ul.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -513,3 +514,7 @@ static void __init imx6ul_clocks_init(struct device_node *ccm_node)
}
CLK_OF_DECLARE(imx6ul, "fsl,imx6ul-ccm", imx6ul_clocks_init);
+
+MODULE_AUTHOR("Frank Li <frank.li@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX6UL clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx7d.c b/drivers/clk/imx/clk-imx7d.c
index b2057bd..1837c42 100644
--- a/drivers/clk/imx/clk-imx7d.c
+++ b/drivers/clk/imx/clk-imx7d.c
@@ -10,6 +10,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/of_irq.h>
@@ -906,3 +907,7 @@ static void __init imx7d_clocks_init(struct device_node *ccm_node)
}
CLK_OF_DECLARE(imx7d, "fsl,imx7d-ccm", imx7d_clocks_init);
+
+MODULE_AUTHOR("Frank Li <frank.li@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX7D clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx7ulp.c b/drivers/clk/imx/clk-imx7ulp.c
index 634c0b6..d2eb80e 100644
--- a/drivers/clk/imx/clk-imx7ulp.c
+++ b/drivers/clk/imx/clk-imx7ulp.c
@@ -12,6 +12,7 @@
#include <linux/err.h>
#include <linux/init.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_address.h>
#include <linux/platform_device.h>
@@ -279,3 +280,7 @@ static void __init imx7ulp_clk_smc1_init(struct device_node *np)
of_clk_add_hw_provider(np, of_clk_hw_onecell_get, clk_data);
}
CLK_OF_DECLARE(imx7ulp_clk_smc1, "fsl,imx7ulp-smc1", imx7ulp_clk_smc1_init);
+
+MODULE_AUTHOR("A.s. Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX7ULP clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c
index 5129ef8..bf174ac 100644
--- a/drivers/clk/imx/clk-vf610.c
+++ b/drivers/clk/imx/clk-vf610.c
@@ -5,6 +5,7 @@
#include <linux/of_address.h>
#include <linux/clk.h>
+#include <linux/module.h>
#include <linux/syscore_ops.h>
#include <dt-bindings/clock/vf610-clock.h>
@@ -468,3 +469,7 @@ static void __init vf610_clocks_init(struct device_node *ccm_node)
of_clk_add_provider(np, of_clk_src_onecell_get, &clk_data);
}
CLK_OF_DECLARE(vf610, "fsl,vf610-ccm", vf610_clocks_init);
+
+MODULE_AUTHOR("Shawn Guo <shawn.guo@linaro.org>");
+MODULE_DESCRIPTION("NXP VF610 clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 3/6] clk: imx: Support building i.MX common clock driver as module
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:23 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
There are more and more requirements of building SoC specific drivers
as modules, add support for building i.MX common clock driver as module
to meet the requirement.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
Changes since V4:
- add empty function of imx_register_uart_clocks() for MODULE build, and
exclude all uart clock related handler when building MODULE.
---
drivers/clk/imx/Kconfig | 8 ++++++--
drivers/clk/imx/Makefile | 40 +++++++++++++++++++-------------------
drivers/clk/imx/clk-composite-8m.c | 2 ++
drivers/clk/imx/clk-cpu.c | 2 ++
drivers/clk/imx/clk-frac-pll.c | 2 ++
drivers/clk/imx/clk-gate2.c | 2 ++
drivers/clk/imx/clk-pll14xx.c | 5 +++++
drivers/clk/imx/clk-sscg-pll.c | 2 ++
drivers/clk/imx/clk.c | 17 ++++++++++++----
drivers/clk/imx/clk.h | 6 ++++++
10 files changed, 60 insertions(+), 26 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index db0253f..ee854ac 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -1,8 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
# common clock support for NXP i.MX SoC family.
config MXC_CLK
- bool
- def_bool ARCH_MXC
+ tristate "IMX clock"
+ depends on ARCH_MXC
config MXC_CLK_SCU
bool
@@ -11,24 +11,28 @@ config MXC_CLK_SCU
config CLK_IMX8MM
bool "IMX8MM CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MM CCM Clock Driver
config CLK_IMX8MN
bool "IMX8MN CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MN CCM Clock Driver
config CLK_IMX8MP
bool "IMX8MP CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MP CCM Clock Driver
config CLK_IMX8MQ
bool "IMX8MQ CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MQ CCM Clock Driver
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 928f874..687207d 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -1,25 +1,25 @@
# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_MXC_CLK) += \
- clk.o \
- clk-busy.o \
- clk-composite-8m.o \
- clk-cpu.o \
- clk-composite-7ulp.o \
- clk-divider-gate.o \
- clk-fixup-div.o \
- clk-fixup-mux.o \
- clk-frac-pll.o \
- clk-gate-exclusive.o \
- clk-gate2.o \
- clk-pfd.o \
- clk-pfdv2.o \
- clk-pllv1.o \
- clk-pllv2.o \
- clk-pllv3.o \
- clk-pllv4.o \
- clk-sscg-pll.o \
- clk-pll14xx.o
+mxc-clk-objs += clk.o
+mxc-clk-objs += clk-busy.o
+mxc-clk-objs += clk-composite-7ulp.o
+mxc-clk-objs += clk-composite-8m.o
+mxc-clk-objs += clk-cpu.o
+mxc-clk-objs += clk-divider-gate.o
+mxc-clk-objs += clk-fixup-div.o
+mxc-clk-objs += clk-fixup-mux.o
+mxc-clk-objs += clk-frac-pll.o
+mxc-clk-objs += clk-gate2.o
+mxc-clk-objs += clk-gate-exclusive.o
+mxc-clk-objs += clk-pfd.o
+mxc-clk-objs += clk-pfdv2.o
+mxc-clk-objs += clk-pllv1.o
+mxc-clk-objs += clk-pllv2.o
+mxc-clk-objs += clk-pllv3.o
+mxc-clk-objs += clk-pllv4.o
+mxc-clk-objs += clk-pll14xx.o
+mxc-clk-objs += clk-sscg-pll.o
+obj-$(CONFIG_MXC_CLK) += mxc-clk.o
obj-$(CONFIG_MXC_CLK_SCU) += \
clk-scu.o \
diff --git a/drivers/clk/imx/clk-composite-8m.c b/drivers/clk/imx/clk-composite-8m.c
index d2b5af8..78fb7e5 100644
--- a/drivers/clk/imx/clk-composite-8m.c
+++ b/drivers/clk/imx/clk-composite-8m.c
@@ -5,6 +5,7 @@
#include <linux/clk-provider.h>
#include <linux/errno.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/slab.h>
@@ -243,3 +244,4 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
kfree(mux);
return ERR_CAST(hw);
}
+EXPORT_SYMBOL_GPL(imx8m_clk_hw_composite_flags);
diff --git a/drivers/clk/imx/clk-cpu.c b/drivers/clk/imx/clk-cpu.c
index cb182be..cb6ca4c 100644
--- a/drivers/clk/imx/clk-cpu.c
+++ b/drivers/clk/imx/clk-cpu.c
@@ -5,6 +5,7 @@
#include <linux/clk.h>
#include <linux/clk-provider.h>
+#include <linux/export.h>
#include <linux/slab.h>
#include "clk.h"
@@ -104,3 +105,4 @@ struct clk_hw *imx_clk_hw_cpu(const char *name, const char *parent_name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_cpu);
diff --git a/drivers/clk/imx/clk-frac-pll.c b/drivers/clk/imx/clk-frac-pll.c
index 101e0a3..c703056 100644
--- a/drivers/clk/imx/clk-frac-pll.c
+++ b/drivers/clk/imx/clk-frac-pll.c
@@ -10,6 +10,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -233,3 +234,4 @@ struct clk_hw *imx_clk_hw_frac_pll(const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_frac_pll);
diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c
index b87ab3c..512f675 100644
--- a/drivers/clk/imx/clk-gate2.c
+++ b/drivers/clk/imx/clk-gate2.c
@@ -7,6 +7,7 @@
*/
#include <linux/clk-provider.h>
+#include <linux/export.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/io.h>
@@ -177,3 +178,4 @@ struct clk_hw *clk_hw_register_gate2(struct device *dev, const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(clk_hw_register_gate2);
diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
index f9eb189..f5c3e7e 100644
--- a/drivers/clk/imx/clk-pll14xx.c
+++ b/drivers/clk/imx/clk-pll14xx.c
@@ -6,6 +6,7 @@
#include <linux/bitops.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -68,6 +69,7 @@ struct imx_pll14xx_clk imx_1443x_pll = {
.rate_table = imx_pll1443x_tbl,
.rate_count = ARRAY_SIZE(imx_pll1443x_tbl),
};
+EXPORT_SYMBOL_GPL(imx_1443x_pll);
struct imx_pll14xx_clk imx_1443x_dram_pll = {
.type = PLL_1443X,
@@ -75,12 +77,14 @@ struct imx_pll14xx_clk imx_1443x_dram_pll = {
.rate_count = ARRAY_SIZE(imx_pll1443x_tbl),
.flags = CLK_GET_RATE_NOCACHE,
};
+EXPORT_SYMBOL_GPL(imx_1443x_dram_pll);
struct imx_pll14xx_clk imx_1416x_pll = {
.type = PLL_1416X,
.rate_table = imx_pll1416x_tbl,
.rate_count = ARRAY_SIZE(imx_pll1416x_tbl),
};
+EXPORT_SYMBOL_GPL(imx_1416x_pll);
static const struct imx_pll14xx_rate_table *imx_get_pll_settings(
struct clk_pll14xx *pll, unsigned long rate)
@@ -436,3 +440,4 @@ struct clk_hw *imx_dev_clk_hw_pll14xx(struct device *dev, const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_dev_clk_hw_pll14xx);
diff --git a/drivers/clk/imx/clk-sscg-pll.c b/drivers/clk/imx/clk-sscg-pll.c
index 773d8a5..9d6cdff 100644
--- a/drivers/clk/imx/clk-sscg-pll.c
+++ b/drivers/clk/imx/clk-sscg-pll.c
@@ -10,6 +10,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -537,3 +538,4 @@ struct clk_hw *imx_clk_hw_sscg_pll(const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_sscg_pll);
diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c
index 87ab8db..547cade 100644
--- a/drivers/clk/imx/clk.c
+++ b/drivers/clk/imx/clk.c
@@ -3,6 +3,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
@@ -13,6 +14,7 @@
#define CCDR_MMDC_CH1_MASK BIT(16)
DEFINE_SPINLOCK(imx_ccm_lock);
+EXPORT_SYMBOL_GPL(imx_ccm_lock);
void imx_unregister_clocks(struct clk *clks[], unsigned int count)
{
@@ -29,8 +31,9 @@ void imx_unregister_hw_clocks(struct clk_hw *hws[], unsigned int count)
for (i = 0; i < count; i++)
clk_hw_unregister(hws[i]);
}
+EXPORT_SYMBOL_GPL(imx_unregister_hw_clocks);
-void __init imx_mmdc_mask_handshake(void __iomem *ccm_base,
+void imx_mmdc_mask_handshake(void __iomem *ccm_base,
unsigned int chn)
{
unsigned int reg;
@@ -59,8 +62,9 @@ void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count)
pr_err("i.MX clk %u: register failed with %ld\n",
i, PTR_ERR(clks[i]));
}
+EXPORT_SYMBOL_GPL(imx_check_clk_hws);
-static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name)
+static struct clk *imx_obtain_fixed_clock_from_dt(const char *name)
{
struct of_phandle_args phandle;
struct clk *clk = ERR_PTR(-ENODEV);
@@ -80,7 +84,7 @@ static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name)
return clk;
}
-struct clk * __init imx_obtain_fixed_clock(
+struct clk *imx_obtain_fixed_clock(
const char *name, unsigned long rate)
{
struct clk *clk;
@@ -91,7 +95,7 @@ struct clk * __init imx_obtain_fixed_clock(
return clk;
}
-struct clk_hw * __init imx_obtain_fixed_clock_hw(
+struct clk_hw *imx_obtain_fixed_clock_hw(
const char *name, unsigned long rate)
{
struct clk *clk;
@@ -113,6 +117,7 @@ struct clk_hw * imx_obtain_fixed_clk_hw(struct device_node *np,
return __clk_get_hw(clk);
}
+EXPORT_SYMBOL_GPL(imx_obtain_fixed_clk_hw);
/*
* This fixups the register CCM_CSCMR1 write value.
@@ -140,6 +145,7 @@ void imx_cscmr1_fixup(u32 *val)
return;
}
+#ifndef MODULE
static int imx_keep_uart_clocks;
static struct clk ** const *imx_uart_clocks;
@@ -177,3 +183,6 @@ static int __init imx_clk_disable_uart(void)
return 0;
}
late_initcall_sync(imx_clk_disable_uart);
+#endif
+
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h
index 16adbc3..dd47c19 100644
--- a/drivers/clk/imx/clk.h
+++ b/drivers/clk/imx/clk.h
@@ -11,7 +11,13 @@ extern spinlock_t imx_ccm_lock;
void imx_check_clocks(struct clk *clks[], unsigned int count);
void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count);
+#ifndef MODULE
void imx_register_uart_clocks(struct clk ** const clks[]);
+#else
+static inline void imx_register_uart_clocks(struct clk ** const clks[])
+{
+}
+#endif
void imx_mmdc_mask_handshake(void __iomem *ccm_base, unsigned int chn);
void imx_unregister_clocks(struct clk *clks[], unsigned int count);
void imx_unregister_hw_clocks(struct clk_hw *hws[], unsigned int count);
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 3/6] clk: imx: Support building i.MX common clock driver as module
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
There are more and more requirements of building SoC specific drivers
as modules, add support for building i.MX common clock driver as module
to meet the requirement.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
Changes since V4:
- add empty function of imx_register_uart_clocks() for MODULE build, and
exclude all uart clock related handler when building MODULE.
---
drivers/clk/imx/Kconfig | 8 ++++++--
drivers/clk/imx/Makefile | 40 +++++++++++++++++++-------------------
drivers/clk/imx/clk-composite-8m.c | 2 ++
drivers/clk/imx/clk-cpu.c | 2 ++
drivers/clk/imx/clk-frac-pll.c | 2 ++
drivers/clk/imx/clk-gate2.c | 2 ++
drivers/clk/imx/clk-pll14xx.c | 5 +++++
drivers/clk/imx/clk-sscg-pll.c | 2 ++
drivers/clk/imx/clk.c | 17 ++++++++++++----
drivers/clk/imx/clk.h | 6 ++++++
10 files changed, 60 insertions(+), 26 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index db0253f..ee854ac 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -1,8 +1,8 @@
# SPDX-License-Identifier: GPL-2.0
# common clock support for NXP i.MX SoC family.
config MXC_CLK
- bool
- def_bool ARCH_MXC
+ tristate "IMX clock"
+ depends on ARCH_MXC
config MXC_CLK_SCU
bool
@@ -11,24 +11,28 @@ config MXC_CLK_SCU
config CLK_IMX8MM
bool "IMX8MM CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MM CCM Clock Driver
config CLK_IMX8MN
bool "IMX8MN CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MN CCM Clock Driver
config CLK_IMX8MP
bool "IMX8MP CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MP CCM Clock Driver
config CLK_IMX8MQ
bool "IMX8MQ CCM Clock Driver"
depends on ARCH_MXC
+ select MXC_CLK
help
Build the driver for i.MX8MQ CCM Clock Driver
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 928f874..687207d 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -1,25 +1,25 @@
# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_MXC_CLK) += \
- clk.o \
- clk-busy.o \
- clk-composite-8m.o \
- clk-cpu.o \
- clk-composite-7ulp.o \
- clk-divider-gate.o \
- clk-fixup-div.o \
- clk-fixup-mux.o \
- clk-frac-pll.o \
- clk-gate-exclusive.o \
- clk-gate2.o \
- clk-pfd.o \
- clk-pfdv2.o \
- clk-pllv1.o \
- clk-pllv2.o \
- clk-pllv3.o \
- clk-pllv4.o \
- clk-sscg-pll.o \
- clk-pll14xx.o
+mxc-clk-objs += clk.o
+mxc-clk-objs += clk-busy.o
+mxc-clk-objs += clk-composite-7ulp.o
+mxc-clk-objs += clk-composite-8m.o
+mxc-clk-objs += clk-cpu.o
+mxc-clk-objs += clk-divider-gate.o
+mxc-clk-objs += clk-fixup-div.o
+mxc-clk-objs += clk-fixup-mux.o
+mxc-clk-objs += clk-frac-pll.o
+mxc-clk-objs += clk-gate2.o
+mxc-clk-objs += clk-gate-exclusive.o
+mxc-clk-objs += clk-pfd.o
+mxc-clk-objs += clk-pfdv2.o
+mxc-clk-objs += clk-pllv1.o
+mxc-clk-objs += clk-pllv2.o
+mxc-clk-objs += clk-pllv3.o
+mxc-clk-objs += clk-pllv4.o
+mxc-clk-objs += clk-pll14xx.o
+mxc-clk-objs += clk-sscg-pll.o
+obj-$(CONFIG_MXC_CLK) += mxc-clk.o
obj-$(CONFIG_MXC_CLK_SCU) += \
clk-scu.o \
diff --git a/drivers/clk/imx/clk-composite-8m.c b/drivers/clk/imx/clk-composite-8m.c
index d2b5af8..78fb7e5 100644
--- a/drivers/clk/imx/clk-composite-8m.c
+++ b/drivers/clk/imx/clk-composite-8m.c
@@ -5,6 +5,7 @@
#include <linux/clk-provider.h>
#include <linux/errno.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/slab.h>
@@ -243,3 +244,4 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
kfree(mux);
return ERR_CAST(hw);
}
+EXPORT_SYMBOL_GPL(imx8m_clk_hw_composite_flags);
diff --git a/drivers/clk/imx/clk-cpu.c b/drivers/clk/imx/clk-cpu.c
index cb182be..cb6ca4c 100644
--- a/drivers/clk/imx/clk-cpu.c
+++ b/drivers/clk/imx/clk-cpu.c
@@ -5,6 +5,7 @@
#include <linux/clk.h>
#include <linux/clk-provider.h>
+#include <linux/export.h>
#include <linux/slab.h>
#include "clk.h"
@@ -104,3 +105,4 @@ struct clk_hw *imx_clk_hw_cpu(const char *name, const char *parent_name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_cpu);
diff --git a/drivers/clk/imx/clk-frac-pll.c b/drivers/clk/imx/clk-frac-pll.c
index 101e0a3..c703056 100644
--- a/drivers/clk/imx/clk-frac-pll.c
+++ b/drivers/clk/imx/clk-frac-pll.c
@@ -10,6 +10,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -233,3 +234,4 @@ struct clk_hw *imx_clk_hw_frac_pll(const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_frac_pll);
diff --git a/drivers/clk/imx/clk-gate2.c b/drivers/clk/imx/clk-gate2.c
index b87ab3c..512f675 100644
--- a/drivers/clk/imx/clk-gate2.c
+++ b/drivers/clk/imx/clk-gate2.c
@@ -7,6 +7,7 @@
*/
#include <linux/clk-provider.h>
+#include <linux/export.h>
#include <linux/module.h>
#include <linux/slab.h>
#include <linux/io.h>
@@ -177,3 +178,4 @@ struct clk_hw *clk_hw_register_gate2(struct device *dev, const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(clk_hw_register_gate2);
diff --git a/drivers/clk/imx/clk-pll14xx.c b/drivers/clk/imx/clk-pll14xx.c
index f9eb189..f5c3e7e 100644
--- a/drivers/clk/imx/clk-pll14xx.c
+++ b/drivers/clk/imx/clk-pll14xx.c
@@ -6,6 +6,7 @@
#include <linux/bitops.h>
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -68,6 +69,7 @@ struct imx_pll14xx_clk imx_1443x_pll = {
.rate_table = imx_pll1443x_tbl,
.rate_count = ARRAY_SIZE(imx_pll1443x_tbl),
};
+EXPORT_SYMBOL_GPL(imx_1443x_pll);
struct imx_pll14xx_clk imx_1443x_dram_pll = {
.type = PLL_1443X,
@@ -75,12 +77,14 @@ struct imx_pll14xx_clk imx_1443x_dram_pll = {
.rate_count = ARRAY_SIZE(imx_pll1443x_tbl),
.flags = CLK_GET_RATE_NOCACHE,
};
+EXPORT_SYMBOL_GPL(imx_1443x_dram_pll);
struct imx_pll14xx_clk imx_1416x_pll = {
.type = PLL_1416X,
.rate_table = imx_pll1416x_tbl,
.rate_count = ARRAY_SIZE(imx_pll1416x_tbl),
};
+EXPORT_SYMBOL_GPL(imx_1416x_pll);
static const struct imx_pll14xx_rate_table *imx_get_pll_settings(
struct clk_pll14xx *pll, unsigned long rate)
@@ -436,3 +440,4 @@ struct clk_hw *imx_dev_clk_hw_pll14xx(struct device *dev, const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_dev_clk_hw_pll14xx);
diff --git a/drivers/clk/imx/clk-sscg-pll.c b/drivers/clk/imx/clk-sscg-pll.c
index 773d8a5..9d6cdff 100644
--- a/drivers/clk/imx/clk-sscg-pll.c
+++ b/drivers/clk/imx/clk-sscg-pll.c
@@ -10,6 +10,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
+#include <linux/export.h>
#include <linux/io.h>
#include <linux/iopoll.h>
#include <linux/slab.h>
@@ -537,3 +538,4 @@ struct clk_hw *imx_clk_hw_sscg_pll(const char *name,
return hw;
}
+EXPORT_SYMBOL_GPL(imx_clk_hw_sscg_pll);
diff --git a/drivers/clk/imx/clk.c b/drivers/clk/imx/clk.c
index 87ab8db..547cade 100644
--- a/drivers/clk/imx/clk.c
+++ b/drivers/clk/imx/clk.c
@@ -3,6 +3,7 @@
#include <linux/clk-provider.h>
#include <linux/err.h>
#include <linux/io.h>
+#include <linux/module.h>
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/spinlock.h>
@@ -13,6 +14,7 @@
#define CCDR_MMDC_CH1_MASK BIT(16)
DEFINE_SPINLOCK(imx_ccm_lock);
+EXPORT_SYMBOL_GPL(imx_ccm_lock);
void imx_unregister_clocks(struct clk *clks[], unsigned int count)
{
@@ -29,8 +31,9 @@ void imx_unregister_hw_clocks(struct clk_hw *hws[], unsigned int count)
for (i = 0; i < count; i++)
clk_hw_unregister(hws[i]);
}
+EXPORT_SYMBOL_GPL(imx_unregister_hw_clocks);
-void __init imx_mmdc_mask_handshake(void __iomem *ccm_base,
+void imx_mmdc_mask_handshake(void __iomem *ccm_base,
unsigned int chn)
{
unsigned int reg;
@@ -59,8 +62,9 @@ void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count)
pr_err("i.MX clk %u: register failed with %ld\n",
i, PTR_ERR(clks[i]));
}
+EXPORT_SYMBOL_GPL(imx_check_clk_hws);
-static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name)
+static struct clk *imx_obtain_fixed_clock_from_dt(const char *name)
{
struct of_phandle_args phandle;
struct clk *clk = ERR_PTR(-ENODEV);
@@ -80,7 +84,7 @@ static struct clk * __init imx_obtain_fixed_clock_from_dt(const char *name)
return clk;
}
-struct clk * __init imx_obtain_fixed_clock(
+struct clk *imx_obtain_fixed_clock(
const char *name, unsigned long rate)
{
struct clk *clk;
@@ -91,7 +95,7 @@ struct clk * __init imx_obtain_fixed_clock(
return clk;
}
-struct clk_hw * __init imx_obtain_fixed_clock_hw(
+struct clk_hw *imx_obtain_fixed_clock_hw(
const char *name, unsigned long rate)
{
struct clk *clk;
@@ -113,6 +117,7 @@ struct clk_hw * imx_obtain_fixed_clk_hw(struct device_node *np,
return __clk_get_hw(clk);
}
+EXPORT_SYMBOL_GPL(imx_obtain_fixed_clk_hw);
/*
* This fixups the register CCM_CSCMR1 write value.
@@ -140,6 +145,7 @@ void imx_cscmr1_fixup(u32 *val)
return;
}
+#ifndef MODULE
static int imx_keep_uart_clocks;
static struct clk ** const *imx_uart_clocks;
@@ -177,3 +183,6 @@ static int __init imx_clk_disable_uart(void)
return 0;
}
late_initcall_sync(imx_clk_disable_uart);
+#endif
+
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk.h b/drivers/clk/imx/clk.h
index 16adbc3..dd47c19 100644
--- a/drivers/clk/imx/clk.h
+++ b/drivers/clk/imx/clk.h
@@ -11,7 +11,13 @@ extern spinlock_t imx_ccm_lock;
void imx_check_clocks(struct clk *clks[], unsigned int count);
void imx_check_clk_hws(struct clk_hw *clks[], unsigned int count);
+#ifndef MODULE
void imx_register_uart_clocks(struct clk ** const clks[]);
+#else
+static inline void imx_register_uart_clocks(struct clk ** const clks[])
+{
+}
+#endif
void imx_mmdc_mask_handshake(void __iomem *ccm_base, unsigned int chn);
void imx_unregister_clocks(struct clk *clks[], unsigned int count);
void imx_unregister_hw_clocks(struct clk_hw *hws[], unsigned int count);
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:23 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Add CONFIG_CLK_xxx for i.MX ARMv7 platforms, and use it as build option
instead of CONFIG_SOC_xxx, the CONFIG_CLK_xxx will be selected by default
according to CONFIG_SOC_xxx, COMPILE_TEST will be also supported.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
---
Changes since V4:
- remove COMPILE_TEST support for i.MX1/2/3;
- add COMPILE_TEST support for i.MX ARMv7 platform ONLY when the corresponding SOC
config is NOT set.
---
drivers/clk/imx/Kconfig | 71 +++++++++++++++++++++++++++++++++++++++++++++++-
drivers/clk/imx/Makefile | 30 ++++++++++----------
2 files changed, 85 insertions(+), 16 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index ee854ac..595c435 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -2,12 +2,81 @@
# common clock support for NXP i.MX SoC family.
config MXC_CLK
tristate "IMX clock"
- depends on ARCH_MXC
+ depends on ARCH_MXC || COMPILE_TEST
config MXC_CLK_SCU
bool
depends on IMX_SCU
+config CLK_IMX1
+ def_bool SOC_IMX1
+ select CLK_MXC
+
+config CLK_IMX21
+ def_bool SOC_IMX21
+ select CLK_MXC
+
+config CLK_IMX25
+ def_bool SOC_IMX25
+ select CLK_MXC
+
+config CLK_IMX27
+ def_bool SOC_IMX27
+ select CLK_MXC
+
+config CLK_IMX31
+ def_bool SOC_IMX31
+ select CLK_MXC
+
+config CLK_IMX35
+ def_bool SOC_IMX35
+ select CLK_MXC
+
+config CLK_IMX5
+ tristate "IMX5 CCM Clock Driver" if COMPILE_TEST && !SOC_IMX5
+ default SOC_IMX5
+ select MXC_CLK
+
+config CLK_IMX6Q
+ tristate "IMX6Q CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6Q
+ default SOC_IMX6Q
+ select MXC_CLK
+
+config CLK_IMX6SL
+ tristate "IMX6SL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SL
+ default SOC_IMX6SL
+ select MXC_CLK
+
+config CLK_IMX6SLL
+ tristate "IMX6SLL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SLL
+ default SOC_IMX6SLL
+ select MXC_CLK
+
+config CLK_IMX6SX
+ tristate "IMX6SX CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SX
+ default SOC_IMX6SX
+ select MXC_CLK
+
+config CLK_IMX6UL
+ tristate "IMX6UL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6UL
+ default SOC_IMX6UL
+ select MXC_CLK
+
+config CLK_IMX7D
+ tristate "IMX7D CCM Clock Driver" if COMPILE_TEST && !SOC_IMX7D
+ default SOC_IMX7D
+ select MXC_CLK
+
+config CLK_IMX7ULP
+ tristate "IMX7ULP Clock Driver" if COMPILE_TEST && !SOC_IMX7ULP
+ default SOC_IMX7ULP
+ select MXC_CLK
+
+config CLK_VF610
+ tristate "VF610 Clock Driver" if COMPILE_TEST && !SOC_VF610
+ default SOC_VF610
+ select MXC_CLK
+
config CLK_IMX8MM
bool "IMX8MM CCM Clock Driver"
depends on ARCH_MXC
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 687207d..17f5d12 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -31,18 +31,18 @@ obj-$(CONFIG_CLK_IMX8MP) += clk-imx8mp.o
obj-$(CONFIG_CLK_IMX8MQ) += clk-imx8mq.o
obj-$(CONFIG_CLK_IMX8QXP) += clk-imx8qxp.o clk-imx8qxp-lpcg.o
-obj-$(CONFIG_SOC_IMX1) += clk-imx1.o
-obj-$(CONFIG_SOC_IMX21) += clk-imx21.o
-obj-$(CONFIG_SOC_IMX25) += clk-imx25.o
-obj-$(CONFIG_SOC_IMX27) += clk-imx27.o
-obj-$(CONFIG_SOC_IMX31) += clk-imx31.o
-obj-$(CONFIG_SOC_IMX35) += clk-imx35.o
-obj-$(CONFIG_SOC_IMX5) += clk-imx5.o
-obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o
-obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o
-obj-$(CONFIG_SOC_IMX6SLL) += clk-imx6sll.o
-obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o
-obj-$(CONFIG_SOC_IMX6UL) += clk-imx6ul.o
-obj-$(CONFIG_SOC_IMX7D) += clk-imx7d.o
-obj-$(CONFIG_SOC_IMX7ULP) += clk-imx7ulp.o
-obj-$(CONFIG_SOC_VF610) += clk-vf610.o
+obj-$(CONFIG_CLK_IMX1) += clk-imx1.o
+obj-$(CONFIG_CLK_IMX21) += clk-imx21.o
+obj-$(CONFIG_CLK_IMX25) += clk-imx25.o
+obj-$(CONFIG_CLK_IMX27) += clk-imx27.o
+obj-$(CONFIG_CLK_IMX31) += clk-imx31.o
+obj-$(CONFIG_CLK_IMX35) += clk-imx35.o
+obj-$(CONFIG_CLK_IMX5) += clk-imx5.o
+obj-$(CONFIG_CLK_IMX6Q) += clk-imx6q.o
+obj-$(CONFIG_CLK_IMX6SL) += clk-imx6sl.o
+obj-$(CONFIG_CLK_IMX6SLL) += clk-imx6sll.o
+obj-$(CONFIG_CLK_IMX6SX) += clk-imx6sx.o
+obj-$(CONFIG_CLK_IMX6UL) += clk-imx6ul.o
+obj-$(CONFIG_CLK_IMX7D) += clk-imx7d.o
+obj-$(CONFIG_CLK_IMX7ULP) += clk-imx7ulp.o
+obj-$(CONFIG_CLK_VF610) += clk-vf610.o
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
@ 2020-07-02 15:23 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:23 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Add CONFIG_CLK_xxx for i.MX ARMv7 platforms, and use it as build option
instead of CONFIG_SOC_xxx, the CONFIG_CLK_xxx will be selected by default
according to CONFIG_SOC_xxx, COMPILE_TEST will be also supported.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
---
Changes since V4:
- remove COMPILE_TEST support for i.MX1/2/3;
- add COMPILE_TEST support for i.MX ARMv7 platform ONLY when the corresponding SOC
config is NOT set.
---
drivers/clk/imx/Kconfig | 71 +++++++++++++++++++++++++++++++++++++++++++++++-
drivers/clk/imx/Makefile | 30 ++++++++++----------
2 files changed, 85 insertions(+), 16 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index ee854ac..595c435 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -2,12 +2,81 @@
# common clock support for NXP i.MX SoC family.
config MXC_CLK
tristate "IMX clock"
- depends on ARCH_MXC
+ depends on ARCH_MXC || COMPILE_TEST
config MXC_CLK_SCU
bool
depends on IMX_SCU
+config CLK_IMX1
+ def_bool SOC_IMX1
+ select CLK_MXC
+
+config CLK_IMX21
+ def_bool SOC_IMX21
+ select CLK_MXC
+
+config CLK_IMX25
+ def_bool SOC_IMX25
+ select CLK_MXC
+
+config CLK_IMX27
+ def_bool SOC_IMX27
+ select CLK_MXC
+
+config CLK_IMX31
+ def_bool SOC_IMX31
+ select CLK_MXC
+
+config CLK_IMX35
+ def_bool SOC_IMX35
+ select CLK_MXC
+
+config CLK_IMX5
+ tristate "IMX5 CCM Clock Driver" if COMPILE_TEST && !SOC_IMX5
+ default SOC_IMX5
+ select MXC_CLK
+
+config CLK_IMX6Q
+ tristate "IMX6Q CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6Q
+ default SOC_IMX6Q
+ select MXC_CLK
+
+config CLK_IMX6SL
+ tristate "IMX6SL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SL
+ default SOC_IMX6SL
+ select MXC_CLK
+
+config CLK_IMX6SLL
+ tristate "IMX6SLL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SLL
+ default SOC_IMX6SLL
+ select MXC_CLK
+
+config CLK_IMX6SX
+ tristate "IMX6SX CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6SX
+ default SOC_IMX6SX
+ select MXC_CLK
+
+config CLK_IMX6UL
+ tristate "IMX6UL CCM Clock Driver" if COMPILE_TEST && !SOC_IMX6UL
+ default SOC_IMX6UL
+ select MXC_CLK
+
+config CLK_IMX7D
+ tristate "IMX7D CCM Clock Driver" if COMPILE_TEST && !SOC_IMX7D
+ default SOC_IMX7D
+ select MXC_CLK
+
+config CLK_IMX7ULP
+ tristate "IMX7ULP Clock Driver" if COMPILE_TEST && !SOC_IMX7ULP
+ default SOC_IMX7ULP
+ select MXC_CLK
+
+config CLK_VF610
+ tristate "VF610 Clock Driver" if COMPILE_TEST && !SOC_VF610
+ default SOC_VF610
+ select MXC_CLK
+
config CLK_IMX8MM
bool "IMX8MM CCM Clock Driver"
depends on ARCH_MXC
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 687207d..17f5d12 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -31,18 +31,18 @@ obj-$(CONFIG_CLK_IMX8MP) += clk-imx8mp.o
obj-$(CONFIG_CLK_IMX8MQ) += clk-imx8mq.o
obj-$(CONFIG_CLK_IMX8QXP) += clk-imx8qxp.o clk-imx8qxp-lpcg.o
-obj-$(CONFIG_SOC_IMX1) += clk-imx1.o
-obj-$(CONFIG_SOC_IMX21) += clk-imx21.o
-obj-$(CONFIG_SOC_IMX25) += clk-imx25.o
-obj-$(CONFIG_SOC_IMX27) += clk-imx27.o
-obj-$(CONFIG_SOC_IMX31) += clk-imx31.o
-obj-$(CONFIG_SOC_IMX35) += clk-imx35.o
-obj-$(CONFIG_SOC_IMX5) += clk-imx5.o
-obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o
-obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o
-obj-$(CONFIG_SOC_IMX6SLL) += clk-imx6sll.o
-obj-$(CONFIG_SOC_IMX6SX) += clk-imx6sx.o
-obj-$(CONFIG_SOC_IMX6UL) += clk-imx6ul.o
-obj-$(CONFIG_SOC_IMX7D) += clk-imx7d.o
-obj-$(CONFIG_SOC_IMX7ULP) += clk-imx7ulp.o
-obj-$(CONFIG_SOC_VF610) += clk-vf610.o
+obj-$(CONFIG_CLK_IMX1) += clk-imx1.o
+obj-$(CONFIG_CLK_IMX21) += clk-imx21.o
+obj-$(CONFIG_CLK_IMX25) += clk-imx25.o
+obj-$(CONFIG_CLK_IMX27) += clk-imx27.o
+obj-$(CONFIG_CLK_IMX31) += clk-imx31.o
+obj-$(CONFIG_CLK_IMX35) += clk-imx35.o
+obj-$(CONFIG_CLK_IMX5) += clk-imx5.o
+obj-$(CONFIG_CLK_IMX6Q) += clk-imx6q.o
+obj-$(CONFIG_CLK_IMX6SL) += clk-imx6sl.o
+obj-$(CONFIG_CLK_IMX6SLL) += clk-imx6sll.o
+obj-$(CONFIG_CLK_IMX6SX) += clk-imx6sx.o
+obj-$(CONFIG_CLK_IMX6UL) += clk-imx6ul.o
+obj-$(CONFIG_CLK_IMX7D) += clk-imx7d.o
+obj-$(CONFIG_CLK_IMX7ULP) += clk-imx7ulp.o
+obj-$(CONFIG_CLK_VF610) += clk-vf610.o
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 5/6] clk: imx8m: Support module build
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:24 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:24 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Change configuration to "tristate", add module author, description
and license to support building i.MX8M SoCs clock driver as module.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
---
drivers/clk/imx/Kconfig | 16 ++++++++--------
drivers/clk/imx/clk-imx8mm.c | 4 ++++
drivers/clk/imx/clk-imx8mn.c | 4 ++++
drivers/clk/imx/clk-imx8mp.c | 4 ++++
drivers/clk/imx/clk-imx8mq.c | 4 ++++
5 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 595c435..4f4f86e 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -78,29 +78,29 @@ config CLK_VF610
select MXC_CLK
config CLK_IMX8MM
- bool "IMX8MM CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MM CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MM CCM Clock Driver
config CLK_IMX8MN
- bool "IMX8MN CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MN CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MN CCM Clock Driver
config CLK_IMX8MP
- bool "IMX8MP CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MP CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MP CCM Clock Driver
config CLK_IMX8MQ
- bool "IMX8MQ CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MQ CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MQ CCM Clock Driver
diff --git a/drivers/clk/imx/clk-imx8mm.c b/drivers/clk/imx/clk-imx8mm.c
index b793264..0de0be0 100644
--- a/drivers/clk/imx/clk-imx8mm.c
+++ b/drivers/clk/imx/clk-imx8mm.c
@@ -657,3 +657,7 @@ static struct platform_driver imx8mm_clk_driver = {
},
};
module_platform_driver(imx8mm_clk_driver);
+
+MODULE_AUTHOR("Bai Ping <ping.bai@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MM clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mn.c b/drivers/clk/imx/clk-imx8mn.c
index 213cc37..e984de5 100644
--- a/drivers/clk/imx/clk-imx8mn.c
+++ b/drivers/clk/imx/clk-imx8mn.c
@@ -608,3 +608,7 @@ static struct platform_driver imx8mn_clk_driver = {
},
};
module_platform_driver(imx8mn_clk_driver);
+
+MODULE_AUTHOR("Anson Huang <Anson.Huang@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MN clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mp.c b/drivers/clk/imx/clk-imx8mp.c
index ca74771..f3cedf2 100644
--- a/drivers/clk/imx/clk-imx8mp.c
+++ b/drivers/clk/imx/clk-imx8mp.c
@@ -773,3 +773,7 @@ static struct platform_driver imx8mp_clk_driver = {
},
};
module_platform_driver(imx8mp_clk_driver);
+
+MODULE_AUTHOR("Anson Huang <Anson.Huang@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MP clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mq.c b/drivers/clk/imx/clk-imx8mq.c
index a64aace..a06cc21 100644
--- a/drivers/clk/imx/clk-imx8mq.c
+++ b/drivers/clk/imx/clk-imx8mq.c
@@ -643,3 +643,7 @@ static struct platform_driver imx8mq_clk_driver = {
},
};
module_platform_driver(imx8mq_clk_driver);
+
+MODULE_AUTHOR("Abel Vesa <abel.vesa@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MQ clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 5/6] clk: imx8m: Support module build
@ 2020-07-02 15:24 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:24 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Change configuration to "tristate", add module author, description
and license to support building i.MX8M SoCs clock driver as module.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com>
---
drivers/clk/imx/Kconfig | 16 ++++++++--------
drivers/clk/imx/clk-imx8mm.c | 4 ++++
drivers/clk/imx/clk-imx8mn.c | 4 ++++
drivers/clk/imx/clk-imx8mp.c | 4 ++++
drivers/clk/imx/clk-imx8mq.c | 4 ++++
5 files changed, 24 insertions(+), 8 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 595c435..4f4f86e 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -78,29 +78,29 @@ config CLK_VF610
select MXC_CLK
config CLK_IMX8MM
- bool "IMX8MM CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MM CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MM CCM Clock Driver
config CLK_IMX8MN
- bool "IMX8MN CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MN CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MN CCM Clock Driver
config CLK_IMX8MP
- bool "IMX8MP CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MP CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MP CCM Clock Driver
config CLK_IMX8MQ
- bool "IMX8MQ CCM Clock Driver"
- depends on ARCH_MXC
+ tristate "IMX8MQ CCM Clock Driver"
+ depends on ARCH_MXC || COMPILE_TEST
select MXC_CLK
help
Build the driver for i.MX8MQ CCM Clock Driver
diff --git a/drivers/clk/imx/clk-imx8mm.c b/drivers/clk/imx/clk-imx8mm.c
index b793264..0de0be0 100644
--- a/drivers/clk/imx/clk-imx8mm.c
+++ b/drivers/clk/imx/clk-imx8mm.c
@@ -657,3 +657,7 @@ static struct platform_driver imx8mm_clk_driver = {
},
};
module_platform_driver(imx8mm_clk_driver);
+
+MODULE_AUTHOR("Bai Ping <ping.bai@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MM clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mn.c b/drivers/clk/imx/clk-imx8mn.c
index 213cc37..e984de5 100644
--- a/drivers/clk/imx/clk-imx8mn.c
+++ b/drivers/clk/imx/clk-imx8mn.c
@@ -608,3 +608,7 @@ static struct platform_driver imx8mn_clk_driver = {
},
};
module_platform_driver(imx8mn_clk_driver);
+
+MODULE_AUTHOR("Anson Huang <Anson.Huang@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MN clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mp.c b/drivers/clk/imx/clk-imx8mp.c
index ca74771..f3cedf2 100644
--- a/drivers/clk/imx/clk-imx8mp.c
+++ b/drivers/clk/imx/clk-imx8mp.c
@@ -773,3 +773,7 @@ static struct platform_driver imx8mp_clk_driver = {
},
};
module_platform_driver(imx8mp_clk_driver);
+
+MODULE_AUTHOR("Anson Huang <Anson.Huang@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MP clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8mq.c b/drivers/clk/imx/clk-imx8mq.c
index a64aace..a06cc21 100644
--- a/drivers/clk/imx/clk-imx8mq.c
+++ b/drivers/clk/imx/clk-imx8mq.c
@@ -643,3 +643,7 @@ static struct platform_driver imx8mq_clk_driver = {
},
};
module_platform_driver(imx8mq_clk_driver);
+
+MODULE_AUTHOR("Abel Vesa <abel.vesa@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8MQ clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 6/6] clk: imx8qxp: Support building i.MX8QXP clock driver as module
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 15:24 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:24 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Change configuration to "tristate", add module author, description and
license to support building i.MX8QXP clock drivers as module.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
Changes since V4:
- keep using builtin_platform_driver();
- add COMPILE_TEST support.
---
drivers/clk/imx/Kconfig | 8 +++++---
drivers/clk/imx/Makefile | 9 ++++-----
drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++++
drivers/clk/imx/clk-imx8qxp.c | 4 ++++
4 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 4f4f86e..51be5e8 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -5,7 +5,8 @@ config MXC_CLK
depends on ARCH_MXC || COMPILE_TEST
config MXC_CLK_SCU
- bool
+ tristate "IMX SCU clock"
+ depends on ARCH_MXC || COMPILE_TEST
depends on IMX_SCU
config CLK_IMX1
@@ -106,8 +107,9 @@ config CLK_IMX8MQ
Build the driver for i.MX8MQ CCM Clock Driver
config CLK_IMX8QXP
- bool "IMX8QXP SCU Clock"
- depends on ARCH_MXC && IMX_SCU && ARM64
+ tristate "IMX8QXP SCU Clock"
+ depends on (ARCH_MXC && ARM64) || COMPILE_TEST
+ depends on IMX_SCU
select MXC_CLK_SCU
help
Build the driver for IMX8QXP SCU based clocks.
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 17f5d12..79e53f2 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -21,15 +21,14 @@ mxc-clk-objs += clk-pll14xx.o
mxc-clk-objs += clk-sscg-pll.o
obj-$(CONFIG_MXC_CLK) += mxc-clk.o
-obj-$(CONFIG_MXC_CLK_SCU) += \
- clk-scu.o \
- clk-lpcg-scu.o
-
obj-$(CONFIG_CLK_IMX8MM) += clk-imx8mm.o
obj-$(CONFIG_CLK_IMX8MN) += clk-imx8mn.o
obj-$(CONFIG_CLK_IMX8MP) += clk-imx8mp.o
obj-$(CONFIG_CLK_IMX8MQ) += clk-imx8mq.o
-obj-$(CONFIG_CLK_IMX8QXP) += clk-imx8qxp.o clk-imx8qxp-lpcg.o
+
+obj-$(CONFIG_MXC_CLK_SCU) += clk-imx-scu.o clk-imx-lpcg-scu.o
+clk-imx-scu-$(CONFIG_CLK_IMX8QXP) += clk-scu.o clk-imx8qxp.o
+clk-imx-lpcg-scu-$(CONFIG_CLK_IMX8QXP) += clk-lpcg-scu.o clk-imx8qxp-lpcg.o
obj-$(CONFIG_CLK_IMX1) += clk-imx1.o
obj-$(CONFIG_CLK_IMX21) += clk-imx21.o
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.c b/drivers/clk/imx/clk-imx8qxp-lpcg.c
index 04c8ee3..e947a70 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.c
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.c
@@ -232,3 +232,7 @@ static struct platform_driver imx8qxp_lpcg_clk_driver = {
};
builtin_platform_driver(imx8qxp_lpcg_clk_driver);
+
+MODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8QXP LPCG clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index 5e2903e..d650ca3 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -152,3 +152,7 @@ static struct platform_driver imx8qxp_clk_driver = {
.probe = imx8qxp_clk_probe,
};
builtin_platform_driver(imx8qxp_clk_driver);
+
+MODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8QXP clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
^ permalink raw reply related [flat|nested] 24+ messages in thread
* [PATCH V5 6/6] clk: imx8qxp: Support building i.MX8QXP clock driver as module
@ 2020-07-02 15:24 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-02 15:24 UTC (permalink / raw)
To: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, laurent.pinchart, chen.fang,
fugang.duan, daniel.baluta, yuehaibing, horia.geanta,
andrew.smirnov, linux-clk, linux-kernel, linux-arm-kernel
Cc: Linux-imx
Change configuration to "tristate", add module author, description and
license to support building i.MX8QXP clock drivers as module.
Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
Changes since V4:
- keep using builtin_platform_driver();
- add COMPILE_TEST support.
---
drivers/clk/imx/Kconfig | 8 +++++---
drivers/clk/imx/Makefile | 9 ++++-----
drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++++
drivers/clk/imx/clk-imx8qxp.c | 4 ++++
4 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 4f4f86e..51be5e8 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -5,7 +5,8 @@ config MXC_CLK
depends on ARCH_MXC || COMPILE_TEST
config MXC_CLK_SCU
- bool
+ tristate "IMX SCU clock"
+ depends on ARCH_MXC || COMPILE_TEST
depends on IMX_SCU
config CLK_IMX1
@@ -106,8 +107,9 @@ config CLK_IMX8MQ
Build the driver for i.MX8MQ CCM Clock Driver
config CLK_IMX8QXP
- bool "IMX8QXP SCU Clock"
- depends on ARCH_MXC && IMX_SCU && ARM64
+ tristate "IMX8QXP SCU Clock"
+ depends on (ARCH_MXC && ARM64) || COMPILE_TEST
+ depends on IMX_SCU
select MXC_CLK_SCU
help
Build the driver for IMX8QXP SCU based clocks.
diff --git a/drivers/clk/imx/Makefile b/drivers/clk/imx/Makefile
index 17f5d12..79e53f2 100644
--- a/drivers/clk/imx/Makefile
+++ b/drivers/clk/imx/Makefile
@@ -21,15 +21,14 @@ mxc-clk-objs += clk-pll14xx.o
mxc-clk-objs += clk-sscg-pll.o
obj-$(CONFIG_MXC_CLK) += mxc-clk.o
-obj-$(CONFIG_MXC_CLK_SCU) += \
- clk-scu.o \
- clk-lpcg-scu.o
-
obj-$(CONFIG_CLK_IMX8MM) += clk-imx8mm.o
obj-$(CONFIG_CLK_IMX8MN) += clk-imx8mn.o
obj-$(CONFIG_CLK_IMX8MP) += clk-imx8mp.o
obj-$(CONFIG_CLK_IMX8MQ) += clk-imx8mq.o
-obj-$(CONFIG_CLK_IMX8QXP) += clk-imx8qxp.o clk-imx8qxp-lpcg.o
+
+obj-$(CONFIG_MXC_CLK_SCU) += clk-imx-scu.o clk-imx-lpcg-scu.o
+clk-imx-scu-$(CONFIG_CLK_IMX8QXP) += clk-scu.o clk-imx8qxp.o
+clk-imx-lpcg-scu-$(CONFIG_CLK_IMX8QXP) += clk-lpcg-scu.o clk-imx8qxp-lpcg.o
obj-$(CONFIG_CLK_IMX1) += clk-imx1.o
obj-$(CONFIG_CLK_IMX21) += clk-imx21.o
diff --git a/drivers/clk/imx/clk-imx8qxp-lpcg.c b/drivers/clk/imx/clk-imx8qxp-lpcg.c
index 04c8ee3..e947a70 100644
--- a/drivers/clk/imx/clk-imx8qxp-lpcg.c
+++ b/drivers/clk/imx/clk-imx8qxp-lpcg.c
@@ -232,3 +232,7 @@ static struct platform_driver imx8qxp_lpcg_clk_driver = {
};
builtin_platform_driver(imx8qxp_lpcg_clk_driver);
+
+MODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8QXP LPCG clock driver");
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/imx/clk-imx8qxp.c b/drivers/clk/imx/clk-imx8qxp.c
index 5e2903e..d650ca3 100644
--- a/drivers/clk/imx/clk-imx8qxp.c
+++ b/drivers/clk/imx/clk-imx8qxp.c
@@ -152,3 +152,7 @@ static struct platform_driver imx8qxp_clk_driver = {
.probe = imx8qxp_clk_probe,
};
builtin_platform_driver(imx8qxp_clk_driver);
+
+MODULE_AUTHOR("Aisheng Dong <aisheng.dong@nxp.com>");
+MODULE_DESCRIPTION("NXP i.MX8QXP clock driver");
+MODULE_LICENSE("GPL v2");
--
2.7.4
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply related [flat|nested] 24+ messages in thread
* Re: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
2020-07-02 15:23 ` Anson Huang
@ 2020-07-02 18:29 ` Laurent Pinchart
-1 siblings, 0 replies; 24+ messages in thread
From: Laurent Pinchart @ 2020-07-02 18:29 UTC (permalink / raw)
To: Anson Huang
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
aisheng.dong, arnd, peng.fan, abel.vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, chen.fang, fugang.duan,
daniel.baluta, yuehaibing, horia.geanta, andrew.smirnov,
linux-clk, linux-kernel, linux-arm-kernel, Linux-imx
Hi Anson,
On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> Nowdays, there are more and more requirements of building SoC specific
> drivers as modules, such as Android GKI (generic kernel image), this
> patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,
I'm curious, how does the system boot to userspace to be able to load
modules without clock support in the kernel ? What if the driver for the
device storing the rootfs cope with clocks not being available ? Does
this require an initramfs with the clock module ? Even then, how does
the serial port driver cope with not having clocks ?
> The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
> various build options, and i.MX1/2/3 platforms now still ONLY support built-in
> as they are rarely used now.
>
> Changes since V4:
> - add empty function of imx_register_uart_clocks() for MODULE build, then
> all earlycon related clock handler can be built-out for MODULE;
> - add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
> - add COMPILE_TEST for ARMv8 platforms;
> - keep using builtin_platform_driver() for i.MX8QXP clock driver.
>
> Anson Huang (6):
> clk: composite: Export clk_hw_register_composite()
> clk: imx: Support module build for i.MX5/6/7 and vf610
> clk: imx: Support building i.MX common clock driver as module
> clk: imx: Add clock configuration for ARMv7 platforms
> clk: imx8m: Support module build
> clk: imx8qxp: Support building i.MX8QXP clock driver as module
>
> drivers/clk/clk-composite.c | 1 +
> drivers/clk/imx/Kconfig | 101 ++++++++++++++++++++++++++++++++-----
> drivers/clk/imx/Makefile | 79 ++++++++++++++---------------
> drivers/clk/imx/clk-composite-8m.c | 2 +
> drivers/clk/imx/clk-cpu.c | 2 +
> drivers/clk/imx/clk-frac-pll.c | 2 +
> drivers/clk/imx/clk-gate2.c | 2 +
> drivers/clk/imx/clk-imx5.c | 5 ++
> drivers/clk/imx/clk-imx6q.c | 5 ++
> drivers/clk/imx/clk-imx6sl.c | 5 ++
> drivers/clk/imx/clk-imx6sll.c | 5 ++
> drivers/clk/imx/clk-imx6sx.c | 5 ++
> drivers/clk/imx/clk-imx6ul.c | 5 ++
> drivers/clk/imx/clk-imx7d.c | 5 ++
> drivers/clk/imx/clk-imx7ulp.c | 5 ++
> drivers/clk/imx/clk-imx8mm.c | 4 ++
> drivers/clk/imx/clk-imx8mn.c | 4 ++
> drivers/clk/imx/clk-imx8mp.c | 4 ++
> drivers/clk/imx/clk-imx8mq.c | 4 ++
> drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++
> drivers/clk/imx/clk-imx8qxp.c | 4 ++
> drivers/clk/imx/clk-pll14xx.c | 5 ++
> drivers/clk/imx/clk-sscg-pll.c | 2 +
> drivers/clk/imx/clk-vf610.c | 5 ++
> drivers/clk/imx/clk.c | 17 +++++--
> drivers/clk/imx/clk.h | 6 +++
> 26 files changed, 231 insertions(+), 57 deletions(-)
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
@ 2020-07-02 18:29 ` Laurent Pinchart
0 siblings, 0 replies; 24+ messages in thread
From: Laurent Pinchart @ 2020-07-02 18:29 UTC (permalink / raw)
To: Anson Huang
Cc: peng.fan, mturquette, chen.fang, festevam, linux-clk, sfr,
abel.vesa, horia.geanta, andrew.smirnov, yuehaibing,
georg.waibel, Linux-imx, Georg.Waibel, arnd, s.hauer,
daniel.baluta, linux-arm-kernel, aisheng.dong, fugang.duan,
sboyd, linux-kernel, kernel, shawnguo, j.remmet
Hi Anson,
On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> Nowdays, there are more and more requirements of building SoC specific
> drivers as modules, such as Android GKI (generic kernel image), this
> patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,
I'm curious, how does the system boot to userspace to be able to load
modules without clock support in the kernel ? What if the driver for the
device storing the rootfs cope with clocks not being available ? Does
this require an initramfs with the clock module ? Even then, how does
the serial port driver cope with not having clocks ?
> The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
> various build options, and i.MX1/2/3 platforms now still ONLY support built-in
> as they are rarely used now.
>
> Changes since V4:
> - add empty function of imx_register_uart_clocks() for MODULE build, then
> all earlycon related clock handler can be built-out for MODULE;
> - add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
> - add COMPILE_TEST for ARMv8 platforms;
> - keep using builtin_platform_driver() for i.MX8QXP clock driver.
>
> Anson Huang (6):
> clk: composite: Export clk_hw_register_composite()
> clk: imx: Support module build for i.MX5/6/7 and vf610
> clk: imx: Support building i.MX common clock driver as module
> clk: imx: Add clock configuration for ARMv7 platforms
> clk: imx8m: Support module build
> clk: imx8qxp: Support building i.MX8QXP clock driver as module
>
> drivers/clk/clk-composite.c | 1 +
> drivers/clk/imx/Kconfig | 101 ++++++++++++++++++++++++++++++++-----
> drivers/clk/imx/Makefile | 79 ++++++++++++++---------------
> drivers/clk/imx/clk-composite-8m.c | 2 +
> drivers/clk/imx/clk-cpu.c | 2 +
> drivers/clk/imx/clk-frac-pll.c | 2 +
> drivers/clk/imx/clk-gate2.c | 2 +
> drivers/clk/imx/clk-imx5.c | 5 ++
> drivers/clk/imx/clk-imx6q.c | 5 ++
> drivers/clk/imx/clk-imx6sl.c | 5 ++
> drivers/clk/imx/clk-imx6sll.c | 5 ++
> drivers/clk/imx/clk-imx6sx.c | 5 ++
> drivers/clk/imx/clk-imx6ul.c | 5 ++
> drivers/clk/imx/clk-imx7d.c | 5 ++
> drivers/clk/imx/clk-imx7ulp.c | 5 ++
> drivers/clk/imx/clk-imx8mm.c | 4 ++
> drivers/clk/imx/clk-imx8mn.c | 4 ++
> drivers/clk/imx/clk-imx8mp.c | 4 ++
> drivers/clk/imx/clk-imx8mq.c | 4 ++
> drivers/clk/imx/clk-imx8qxp-lpcg.c | 4 ++
> drivers/clk/imx/clk-imx8qxp.c | 4 ++
> drivers/clk/imx/clk-pll14xx.c | 5 ++
> drivers/clk/imx/clk-sscg-pll.c | 2 +
> drivers/clk/imx/clk-vf610.c | 5 ++
> drivers/clk/imx/clk.c | 17 +++++--
> drivers/clk/imx/clk.h | 6 +++
> 26 files changed, 231 insertions(+), 57 deletions(-)
--
Regards,
Laurent Pinchart
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-02 15:23 ` Anson Huang
(?)
@ 2020-07-03 7:15 ` kernel test robot
-1 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2020-07-03 7:15 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2085 bytes --]
Hi Anson,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on shawnguo/for-next]
[also build test ERROR on clk/clk-next v5.8-rc3 next-20200702]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Anson-Huang/Support-building-i-MX-ARMv7-ARMv8-platforms-clock-driver-as-module/20200702-233004
base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
ld: drivers/clk/imx/clk-imx5.o: in function `mx50_clocks_init':
>> clk-imx5.c:(.init.text+0x1f81): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx5.o: in function `mx51_clocks_init':
>> clk-imx5.c:(.init.text+0x2744): undefined reference to `mx51_revision'
>> ld: clk-imx5.c:(.init.text+0x2750): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx5.o: in function `mx53_clocks_init':
>> clk-imx5.c:(.init.text+0x3556): undefined reference to `mx53_revision'
ld: clk-imx5.c:(.init.text+0x3562): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx6q.o: in function `of_assigned_ldb_sels':
>> clk-imx6q.c:(.text.unlikely+0x195): undefined reference to `imx_get_soc_revision'
ld: drivers/clk/imx/clk-imx6q.o: in function `imx6q_clocks_init':
>> clk-imx6q.c:(.init.text+0x146): undefined reference to `imx_get_soc_revision'
>> ld: clk-imx6q.c:(.init.text+0x38a5): undefined reference to `imx_get_soc_revision'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 74080 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-02 15:23 ` Anson Huang
(?)
(?)
@ 2020-07-03 17:25 ` kernel test robot
-1 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2020-07-03 17:25 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2368 bytes --]
Hi Anson,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on shawnguo/for-next]
[also build test ERROR on clk/clk-next v5.8-rc3 next-20200703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Anson-Huang/Support-building-i-MX-ARMv7-ARMv8-platforms-clock-driver-as-module/20200702-233004
base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
config: h8300-allyesconfig (attached as .config)
compiler: h8300-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=h8300
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
h8300-linux-ld: drivers/clk/imx/clk-imx5.o: in function `.L527':
clk-imx5.c:(.init.text+0x3547): undefined reference to `imx_print_silicon_rev'
h8300-linux-ld: drivers/clk/imx/clk-imx5.o: in function `.L637':
clk-imx5.c:(.init.text+0x41a7): undefined reference to `mx51_revision'
>> h8300-linux-ld: clk-imx5.c:(.init.text+0x41b3): undefined reference to `imx_print_silicon_rev'
h8300-linux-ld: drivers/clk/imx/clk-imx5.o: in function `.L788':
clk-imx5.c:(.init.text+0x596b): undefined reference to `mx53_revision'
h8300-linux-ld: clk-imx5.c:(.init.text+0x5977): undefined reference to `imx_print_silicon_rev'
h8300-linux-ld: drivers/clk/imx/clk-imx6q.o: in function `.L20':
clk-imx6q.c:(.text.unlikely+0x2e3): undefined reference to `imx_get_soc_revision'
h8300-linux-ld: drivers/clk/imx/clk-imx6q.o: in function `.L102':
clk-imx6q.c:(.init.text+0xbd): undefined reference to `imx_get_soc_revision'
h8300-linux-ld: drivers/clk/imx/clk-imx6q.o: in function `.L92':
clk-imx6q.c:(.init.text+0x674b): undefined reference to `imx_get_soc_revision'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 55755 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 6/6] clk: imx8qxp: Support building i.MX8QXP clock driver as module
2020-07-02 15:24 ` Anson Huang
(?)
@ 2020-07-03 19:41 ` kernel test robot
-1 siblings, 0 replies; 24+ messages in thread
From: kernel test robot @ 2020-07-03 19:41 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2229 bytes --]
Hi Anson,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on shawnguo/for-next]
[also build test ERROR on clk/clk-next v5.8-rc3 next-20200703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Anson-Huang/Support-building-i-MX-ARMv7-ARMv8-platforms-clock-driver-as-module/20200702-233004
base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
config: i386-allyesconfig (attached as .config)
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
reproduce (this is a W=1 build):
# save the attached .config to linux build tree
make W=1 ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
ld: drivers/clk/imx/clk-scu.o: in function `clk_scu_atf_set_cpu_rate':
>> clk-scu.c:(.text+0x48): undefined reference to `__arm_smccc_smc'
ld: drivers/clk/imx/clk-imx5.o: in function `mx50_clocks_init':
clk-imx5.c:(.init.text+0x1f81): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx5.o: in function `mx51_clocks_init':
clk-imx5.c:(.init.text+0x2744): undefined reference to `mx51_revision'
ld: clk-imx5.c:(.init.text+0x2750): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx5.o: in function `mx53_clocks_init':
clk-imx5.c:(.init.text+0x3556): undefined reference to `mx53_revision'
ld: clk-imx5.c:(.init.text+0x3562): undefined reference to `imx_print_silicon_rev'
ld: drivers/clk/imx/clk-imx6q.o: in function `of_assigned_ldb_sels':
clk-imx6q.c:(.text.unlikely+0x195): undefined reference to `imx_get_soc_revision'
ld: drivers/clk/imx/clk-imx6q.o: in function `imx6q_clocks_init':
clk-imx6q.c:(.init.text+0x146): undefined reference to `imx_get_soc_revision'
ld: clk-imx6q.c:(.init.text+0x38a5): undefined reference to `imx_get_soc_revision'
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 74102 bytes --]
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-02 15:23 ` Anson Huang
` (2 preceding siblings ...)
(?)
@ 2020-07-04 1:36 ` kernel test robot
2020-07-04 8:48 ` Arnd Bergmann
-1 siblings, 1 reply; 24+ messages in thread
From: kernel test robot @ 2020-07-04 1:36 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 12819 bytes --]
Hi Anson,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on shawnguo/for-next]
[also build test WARNING on clk/clk-next v5.8-rc3 next-20200703]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use as documented in
https://git-scm.com/docs/git-format-patch]
url: https://github.com/0day-ci/linux/commits/Anson-Huang/Support-building-i-MX-ARMv7-ARMv8-platforms-clock-driver-as-module/20200702-233004
base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
cppcheck warnings: (new ones prefixed by >>)
>> drivers/clk/imx/clk-composite-8m.c:119:9: warning: Identical condition 'ret', second condition is always false [identicalConditionAfterEarlyExit]
return ret;
^
drivers/clk/imx/clk-composite-8m.c:104:6: note: first condition
if (ret)
^
drivers/clk/imx/clk-composite-8m.c:119:9: note: second condition
return ret;
^
>> drivers/clk/imx/clk-composite-8m.c:233:5: warning: Variable 'hw' is reassigned a value before the old one has been used. [redundantAssignment]
hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
^
drivers/clk/imx/clk-composite-8m.c:180:0: note: Variable 'hw' is reassigned a value before the old one has been used.
struct clk_hw *hw = ERR_PTR(-ENOMEM), *mux_hw;
^
drivers/clk/imx/clk-composite-8m.c:233:5: note: Variable 'hw' is reassigned a value before the old one has been used.
hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
^
--
>> drivers/clk/imx/clk-imx6sl.c:149:49: warning: Shifting signed 32-bit value by 31 bits is undefined behaviour [shiftTooManyBitsSigned]
while (!(__raw_readl(anatop_base + PLL_ARM) & BM_PLL_ARM_LOCK))
^
vim +/ret +119 drivers/clk/imx/clk-composite-8m.c
d3ff9728134eea Abel Vesa 2018-12-01 90
d3ff9728134eea Abel Vesa 2018-12-01 91 static int imx8m_clk_composite_divider_set_rate(struct clk_hw *hw,
d3ff9728134eea Abel Vesa 2018-12-01 92 unsigned long rate,
d3ff9728134eea Abel Vesa 2018-12-01 93 unsigned long parent_rate)
d3ff9728134eea Abel Vesa 2018-12-01 94 {
d3ff9728134eea Abel Vesa 2018-12-01 95 struct clk_divider *divider = to_clk_divider(hw);
79ccef698ac811 Anson Huang 2020-02-12 96 unsigned long flags;
d3ff9728134eea Abel Vesa 2018-12-01 97 int prediv_value;
d3ff9728134eea Abel Vesa 2018-12-01 98 int div_value;
33e7a8422546b5 Colin Ian King 2018-12-09 99 int ret;
d3ff9728134eea Abel Vesa 2018-12-01 100 u32 val;
d3ff9728134eea Abel Vesa 2018-12-01 101
d3ff9728134eea Abel Vesa 2018-12-01 102 ret = imx8m_clk_composite_compute_dividers(rate, parent_rate,
d3ff9728134eea Abel Vesa 2018-12-01 103 &prediv_value, &div_value);
d3ff9728134eea Abel Vesa 2018-12-01 104 if (ret)
d3ff9728134eea Abel Vesa 2018-12-01 105 return -EINVAL;
d3ff9728134eea Abel Vesa 2018-12-01 106
d3ff9728134eea Abel Vesa 2018-12-01 107 spin_lock_irqsave(divider->lock, flags);
d3ff9728134eea Abel Vesa 2018-12-01 108
d3ff9728134eea Abel Vesa 2018-12-01 109 val = readl(divider->reg);
d3ff9728134eea Abel Vesa 2018-12-01 110 val &= ~((clk_div_mask(divider->width) << divider->shift) |
d3ff9728134eea Abel Vesa 2018-12-01 111 (clk_div_mask(PCG_DIV_WIDTH) << PCG_DIV_SHIFT));
d3ff9728134eea Abel Vesa 2018-12-01 112
d3ff9728134eea Abel Vesa 2018-12-01 113 val |= (u32)(prediv_value - 1) << divider->shift;
d3ff9728134eea Abel Vesa 2018-12-01 114 val |= (u32)(div_value - 1) << PCG_DIV_SHIFT;
d3ff9728134eea Abel Vesa 2018-12-01 115 writel(val, divider->reg);
d3ff9728134eea Abel Vesa 2018-12-01 116
d3ff9728134eea Abel Vesa 2018-12-01 117 spin_unlock_irqrestore(divider->lock, flags);
d3ff9728134eea Abel Vesa 2018-12-01 118
d3ff9728134eea Abel Vesa 2018-12-01 @119 return ret;
d3ff9728134eea Abel Vesa 2018-12-01 120 }
d3ff9728134eea Abel Vesa 2018-12-01 121
d3ff9728134eea Abel Vesa 2018-12-01 122 static const struct clk_ops imx8m_clk_composite_divider_ops = {
d3ff9728134eea Abel Vesa 2018-12-01 123 .recalc_rate = imx8m_clk_composite_divider_recalc_rate,
d3ff9728134eea Abel Vesa 2018-12-01 124 .round_rate = imx8m_clk_composite_divider_round_rate,
d3ff9728134eea Abel Vesa 2018-12-01 125 .set_rate = imx8m_clk_composite_divider_set_rate,
d3ff9728134eea Abel Vesa 2018-12-01 126 };
d3ff9728134eea Abel Vesa 2018-12-01 127
f90b68d6c8b008 Peng Fan 2020-05-07 128 static u8 imx8m_clk_composite_mux_get_parent(struct clk_hw *hw)
f90b68d6c8b008 Peng Fan 2020-05-07 129 {
f90b68d6c8b008 Peng Fan 2020-05-07 130 return clk_mux_ops.get_parent(hw);
f90b68d6c8b008 Peng Fan 2020-05-07 131 }
f90b68d6c8b008 Peng Fan 2020-05-07 132
f90b68d6c8b008 Peng Fan 2020-05-07 133 static int imx8m_clk_composite_mux_set_parent(struct clk_hw *hw, u8 index)
f90b68d6c8b008 Peng Fan 2020-05-07 134 {
f90b68d6c8b008 Peng Fan 2020-05-07 135 struct clk_mux *mux = to_clk_mux(hw);
f90b68d6c8b008 Peng Fan 2020-05-07 136 u32 val = clk_mux_index_to_val(mux->table, mux->flags, index);
f90b68d6c8b008 Peng Fan 2020-05-07 137 unsigned long flags = 0;
f90b68d6c8b008 Peng Fan 2020-05-07 138 u32 reg;
f90b68d6c8b008 Peng Fan 2020-05-07 139
f90b68d6c8b008 Peng Fan 2020-05-07 140 if (mux->lock)
f90b68d6c8b008 Peng Fan 2020-05-07 141 spin_lock_irqsave(mux->lock, flags);
f90b68d6c8b008 Peng Fan 2020-05-07 142
f90b68d6c8b008 Peng Fan 2020-05-07 143 reg = readl(mux->reg);
f90b68d6c8b008 Peng Fan 2020-05-07 144 reg &= ~(mux->mask << mux->shift);
f90b68d6c8b008 Peng Fan 2020-05-07 145 val = val << mux->shift;
f90b68d6c8b008 Peng Fan 2020-05-07 146 reg |= val;
f90b68d6c8b008 Peng Fan 2020-05-07 147 /*
f90b68d6c8b008 Peng Fan 2020-05-07 148 * write twice to make sure non-target interface
f90b68d6c8b008 Peng Fan 2020-05-07 149 * SEL_A/B point the same clk input.
f90b68d6c8b008 Peng Fan 2020-05-07 150 */
f90b68d6c8b008 Peng Fan 2020-05-07 151 writel(reg, mux->reg);
f90b68d6c8b008 Peng Fan 2020-05-07 152 writel(reg, mux->reg);
f90b68d6c8b008 Peng Fan 2020-05-07 153
f90b68d6c8b008 Peng Fan 2020-05-07 154 if (mux->lock)
f90b68d6c8b008 Peng Fan 2020-05-07 155 spin_unlock_irqrestore(mux->lock, flags);
f90b68d6c8b008 Peng Fan 2020-05-07 156
f90b68d6c8b008 Peng Fan 2020-05-07 157 return 0;
f90b68d6c8b008 Peng Fan 2020-05-07 158 }
f90b68d6c8b008 Peng Fan 2020-05-07 159
f90b68d6c8b008 Peng Fan 2020-05-07 160 static int
f90b68d6c8b008 Peng Fan 2020-05-07 161 imx8m_clk_composite_mux_determine_rate(struct clk_hw *hw,
f90b68d6c8b008 Peng Fan 2020-05-07 162 struct clk_rate_request *req)
f90b68d6c8b008 Peng Fan 2020-05-07 163 {
f90b68d6c8b008 Peng Fan 2020-05-07 164 return clk_mux_ops.determine_rate(hw, req);
f90b68d6c8b008 Peng Fan 2020-05-07 165 }
f90b68d6c8b008 Peng Fan 2020-05-07 166
f90b68d6c8b008 Peng Fan 2020-05-07 167
f90b68d6c8b008 Peng Fan 2020-05-07 168 static const struct clk_ops imx8m_clk_composite_mux_ops = {
f90b68d6c8b008 Peng Fan 2020-05-07 169 .get_parent = imx8m_clk_composite_mux_get_parent,
f90b68d6c8b008 Peng Fan 2020-05-07 170 .set_parent = imx8m_clk_composite_mux_set_parent,
f90b68d6c8b008 Peng Fan 2020-05-07 171 .determine_rate = imx8m_clk_composite_mux_determine_rate,
f90b68d6c8b008 Peng Fan 2020-05-07 172 };
f90b68d6c8b008 Peng Fan 2020-05-07 173
a4b431f8038a67 Peng Fan 2019-12-12 174 struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
65a6b7c5f31c39 Abel Vesa 2018-12-14 175 const char * const *parent_names,
d3ff9728134eea Abel Vesa 2018-12-01 176 int num_parents, void __iomem *reg,
62668b68dc8e7d Peng Fan 2020-01-28 177 u32 composite_flags,
d3ff9728134eea Abel Vesa 2018-12-01 178 unsigned long flags)
d3ff9728134eea Abel Vesa 2018-12-01 179 {
d3ff9728134eea Abel Vesa 2018-12-01 180 struct clk_hw *hw = ERR_PTR(-ENOMEM), *mux_hw;
d3ff9728134eea Abel Vesa 2018-12-01 181 struct clk_hw *div_hw, *gate_hw;
d3ff9728134eea Abel Vesa 2018-12-01 182 struct clk_divider *div = NULL;
d3ff9728134eea Abel Vesa 2018-12-01 183 struct clk_gate *gate = NULL;
d3ff9728134eea Abel Vesa 2018-12-01 184 struct clk_mux *mux = NULL;
62668b68dc8e7d Peng Fan 2020-01-28 185 const struct clk_ops *divider_ops;
f90b68d6c8b008 Peng Fan 2020-05-07 186 const struct clk_ops *mux_ops;
d3ff9728134eea Abel Vesa 2018-12-01 187
d3ff9728134eea Abel Vesa 2018-12-01 188 mux = kzalloc(sizeof(*mux), GFP_KERNEL);
d3ff9728134eea Abel Vesa 2018-12-01 189 if (!mux)
d3ff9728134eea Abel Vesa 2018-12-01 190 goto fail;
d3ff9728134eea Abel Vesa 2018-12-01 191
d3ff9728134eea Abel Vesa 2018-12-01 192 mux_hw = &mux->hw;
d3ff9728134eea Abel Vesa 2018-12-01 193 mux->reg = reg;
d3ff9728134eea Abel Vesa 2018-12-01 194 mux->shift = PCG_PCS_SHIFT;
d3ff9728134eea Abel Vesa 2018-12-01 195 mux->mask = PCG_PCS_MASK;
073a01e8d7c23b Peng Fan 2019-11-01 196 mux->lock = &imx_ccm_lock;
d3ff9728134eea Abel Vesa 2018-12-01 197
d3ff9728134eea Abel Vesa 2018-12-01 198 div = kzalloc(sizeof(*div), GFP_KERNEL);
d3ff9728134eea Abel Vesa 2018-12-01 199 if (!div)
d3ff9728134eea Abel Vesa 2018-12-01 200 goto fail;
d3ff9728134eea Abel Vesa 2018-12-01 201
d3ff9728134eea Abel Vesa 2018-12-01 202 div_hw = &div->hw;
d3ff9728134eea Abel Vesa 2018-12-01 203 div->reg = reg;
62668b68dc8e7d Peng Fan 2020-01-28 204 if (composite_flags & IMX_COMPOSITE_CORE) {
62668b68dc8e7d Peng Fan 2020-01-28 205 div->shift = PCG_DIV_SHIFT;
62668b68dc8e7d Peng Fan 2020-01-28 206 div->width = PCG_CORE_DIV_WIDTH;
62668b68dc8e7d Peng Fan 2020-01-28 207 divider_ops = &clk_divider_ops;
f90b68d6c8b008 Peng Fan 2020-05-07 208 mux_ops = &imx8m_clk_composite_mux_ops;
0e40198dc28b62 Peng Fan 2020-05-07 209 } else if (composite_flags & IMX_COMPOSITE_BUS) {
0e40198dc28b62 Peng Fan 2020-05-07 210 div->shift = PCG_PREDIV_SHIFT;
0e40198dc28b62 Peng Fan 2020-05-07 211 div->width = PCG_PREDIV_WIDTH;
0e40198dc28b62 Peng Fan 2020-05-07 212 divider_ops = &imx8m_clk_composite_divider_ops;
0e40198dc28b62 Peng Fan 2020-05-07 213 mux_ops = &imx8m_clk_composite_mux_ops;
62668b68dc8e7d Peng Fan 2020-01-28 214 } else {
d3ff9728134eea Abel Vesa 2018-12-01 215 div->shift = PCG_PREDIV_SHIFT;
d3ff9728134eea Abel Vesa 2018-12-01 216 div->width = PCG_PREDIV_WIDTH;
62668b68dc8e7d Peng Fan 2020-01-28 217 divider_ops = &imx8m_clk_composite_divider_ops;
f90b68d6c8b008 Peng Fan 2020-05-07 218 mux_ops = &clk_mux_ops;
62668b68dc8e7d Peng Fan 2020-01-28 219 }
62668b68dc8e7d Peng Fan 2020-01-28 220
d3ff9728134eea Abel Vesa 2018-12-01 221 div->lock = &imx_ccm_lock;
d3ff9728134eea Abel Vesa 2018-12-01 222 div->flags = CLK_DIVIDER_ROUND_CLOSEST;
d3ff9728134eea Abel Vesa 2018-12-01 223
d3ff9728134eea Abel Vesa 2018-12-01 224 gate = kzalloc(sizeof(*gate), GFP_KERNEL);
d3ff9728134eea Abel Vesa 2018-12-01 225 if (!gate)
d3ff9728134eea Abel Vesa 2018-12-01 226 goto fail;
d3ff9728134eea Abel Vesa 2018-12-01 227
d3ff9728134eea Abel Vesa 2018-12-01 228 gate_hw = &gate->hw;
d3ff9728134eea Abel Vesa 2018-12-01 229 gate->reg = reg;
d3ff9728134eea Abel Vesa 2018-12-01 230 gate->bit_idx = PCG_CGC_SHIFT;
073a01e8d7c23b Peng Fan 2019-11-01 231 gate->lock = &imx_ccm_lock;
d3ff9728134eea Abel Vesa 2018-12-01 232
d3ff9728134eea Abel Vesa 2018-12-01 @233 hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-04 1:36 ` kernel test robot
@ 2020-07-04 8:48 ` Arnd Bergmann
2020-07-04 9:22 ` Anson Huang
0 siblings, 1 reply; 24+ messages in thread
From: Arnd Bergmann @ 2020-07-04 8:48 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 2539 bytes --]
On Sat, Jul 4, 2020 at 3:37 AM kernel test robot <lkp@intel.com> wrote:
> url: https://github.com/0day-ci/linux/commits/Anson-Huang/Support-building-i-MX-ARMv7-ARMv8-platforms-clock-driver-as-module/20200702-233004
> base: https://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git for-next
> compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
>
>
> cppcheck warnings: (new ones prefixed by >>)
>
> >> drivers/clk/imx/clk-composite-8m.c:119:9: warning: Identical condition 'ret', second condition is always false [identicalConditionAfterEarlyExit]
> return ret;
> ^
> drivers/clk/imx/clk-composite-8m.c:104:6: note: first condition
> if (ret)
> ^
> drivers/clk/imx/clk-composite-8m.c:119:9: note: second condition
> return ret;
> ^
This warning seems completely bogus, as far as I can tell the code does exactly
what was intended and it is written in a readable way. Since this is a
cppcheck warning
(as opposed to gcc or sparse warnings), I think it can be safely ignored.
> >> drivers/clk/imx/clk-composite-8m.c:233:5: warning: Variable 'hw' is reassigned a value before the old one has been used. [redundantAssignment]
> hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
> ^
> drivers/clk/imx/clk-composite-8m.c:180:0: note: Variable 'hw' is reassigned a value before the old one has been used.
> struct clk_hw *hw = ERR_PTR(-ENOMEM), *mux_hw;
> ^
> drivers/clk/imx/clk-composite-8m.c:233:5: note: Variable 'hw' is reassigned a value before the old one has been used.
> hw = clk_hw_register_composite(NULL, name, parent_names, num_parents,
> ^
Same here, I don't think the warning makes much sense either:
the assignment is unused if the 'goto' is not hit, but in the error case
it is important, and it seems cppcheck just gets this wrong.
> >> drivers/clk/imx/clk-imx6sl.c:149:49: warning: Shifting signed 32-bit value by 31 bits is undefined behaviour [shiftTooManyBitsSigned]
> while (!(__raw_readl(anatop_base + PLL_ARM) & BM_PLL_ARM_LOCK))
> ^
This in turn should be fixed, and the same line appears to be broken
when running with CONFIG_CPU_BIG_ENDIAN=y (which otherwise
works fine on i.mx) for no reason.
Please fix both the usage of __raw_readl() and the BM_PLL_ARM_LOCK definition.
Arnd
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms
2020-07-04 8:48 ` Arnd Bergmann
@ 2020-07-04 9:22 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-04 9:22 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 5522 bytes --]
Hi, Arnd
> Subject: Re: [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7
> platforms
>
> On Sat, Jul 4, 2020 at 3:37 AM kernel test robot <lkp@intel.com> wrote:
> > url:
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.
> com%2F0day-ci%2Flinux%2Fcommits%2FAnson-Huang%2FSupport-building-i-
> MX-ARMv7-ARMv8-platforms-clock-driver-as-module%2F20200702-233004&
> amp;data=02%7C01%7CAnson.Huang%40nxp.com%7C9706e8f5d157453e8fa
> 308d81ff70b2c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C637
> 294493188060696&sdata=6GzWrP3DOj4f1wrViK1IfRF8gxq%2F%2F5clb
> %2B1FOjz0jdU%3D&reserved=0
> > base:
> https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgit.kern
> el.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Fshawnguo%2Flinux.git&a
> mp;data=02%7C01%7CAnson.Huang%40nxp.com%7C9706e8f5d157453e8fa3
> 08d81ff70b2c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6372
> 94493188060696&sdata=JIgR9ova2%2F83tLPZt1iDLKNMFLT2wLNtK2yW
> OFhlGU4%3D&reserved=0 for-next
> > compiler: gcc-9 (Debian 9.3.0-14) 9.3.0
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> >
> >
> > cppcheck warnings: (new ones prefixed by >>)
> >
> > >> drivers/clk/imx/clk-composite-8m.c:119:9: warning: Identical
> > >> condition 'ret', second condition is always false
> > >> [identicalConditionAfterEarlyExit]
> > return ret;
> > ^
> > drivers/clk/imx/clk-composite-8m.c:104:6: note: first condition
> > if (ret)
> > ^
> > drivers/clk/imx/clk-composite-8m.c:119:9: note: second condition
> > return ret;
> > ^
>
> This warning seems completely bogus, as far as I can tell the code does exactly
> what was intended and it is written in a readable way. Since this is a cppcheck
> warning (as opposed to gcc or sparse warnings), I think it can be safely ignored.
>
> > >> drivers/clk/imx/clk-composite-8m.c:233:5: warning: Variable 'hw' is
> > >> reassigned a value before the old one has been used.
> > >> [redundantAssignment]
> > hw = clk_hw_register_composite(NULL, name, parent_names,
> num_parents,
> > ^
> > drivers/clk/imx/clk-composite-8m.c:180:0: note: Variable 'hw' is
> reassigned a value before the old one has been used.
> > struct clk_hw *hw = ERR_PTR(-ENOMEM), *mux_hw;
> > ^
> > drivers/clk/imx/clk-composite-8m.c:233:5: note: Variable 'hw' is
> reassigned a value before the old one has been used.
> > hw = clk_hw_register_composite(NULL, name, parent_names,
> num_parents,
> > ^
>
> Same here, I don't think the warning makes much sense either:
> the assignment is unused if the 'goto' is not hit, but in the error case it is
> important, and it seems cppcheck just gets this wrong.
>
OK, so I will drop the local patch of trying fix it as below, and just ignore the build warning:
+++ b/drivers/clk/imx/clk-composite-8m.c
@@ -116,7 +116,7 @@ static int imx8m_clk_composite_divider_set_rate(struct clk_hw *hw,
spin_unlock_irqrestore(divider->lock, flags);
- return ret;
+ return 0;
}
static const struct clk_ops imx8m_clk_composite_divider_ops = {
@@ -177,7 +177,7 @@ struct clk_hw *imx8m_clk_hw_composite_flags(const char *name,
u32 composite_flags,
unsigned long flags)
{
- struct clk_hw *hw = ERR_PTR(-ENOMEM), *mux_hw;
+ struct clk_hw *hw, *mux_hw;
struct clk_hw *div_hw, *gate_hw;
> > >> drivers/clk/imx/clk-imx6sl.c:149:49: warning: Shifting signed
> > >> 32-bit value by 31 bits is undefined behaviour
> > >> [shiftTooManyBitsSigned]
> > while (!(__raw_readl(anatop_base + PLL_ARM) &
> BM_PLL_ARM_LOCK))
> > ^
>
> This in turn should be fixed, and the same line appears to be broken when
> running with CONFIG_CPU_BIG_ENDIAN=y (which otherwise works fine on
> i.mx) for no reason.
>
> Please fix both the usage of __raw_readl() and the BM_PLL_ARM_LOCK
> definition.
Actually I am a little confused about this, the __raw_readl() should return 'unsigned int'?
or with other CONFIG, it may return 'signed int'? I saw some of the drivers also using (unsigned int)
before __raw_readl() to force it to u32. And for the BM_PLL_ARM_LOCK, I will fix it, below patch
is in my next patch series:
+++ b/drivers/clk/imx/clk-imx6sl.c
@@ -3,6 +3,7 @@
* Copyright 2013-2014 Freescale Semiconductor, Inc.
*/
+#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/clkdev.h>
#include <linux/err.h>
@@ -27,7 +28,7 @@
#define BM_PLL_ARM_DIV_SELECT (0x7f << 0)
#define BM_PLL_ARM_POWERDOWN (1 << 12)
#define BM_PLL_ARM_ENABLE (1 << 13)
-#define BM_PLL_ARM_LOCK (1 << 31)
+#define BM_PLL_ARM_LOCK BIT(31)
#define PLL_ARM_DIV_792M 66
static const char *step_sels[] = { "osc", "pll2_pfd2", };
@@ -146,7 +147,7 @@ static void imx6sl_enable_pll_arm(bool enable)
val |= BM_PLL_ARM_ENABLE;
val &= ~BM_PLL_ARM_POWERDOWN;
writel_relaxed(val, anatop_base + PLL_ARM);
- while (!(__raw_readl(anatop_base + PLL_ARM) & BM_PLL_ARM_LOCK))
+ while (!((u32)__raw_readl(anatop_base + PLL_ARM) & BM_PLL_ARM_LOCK))
;
} else {
Thanks,
Anson
^ permalink raw reply [flat|nested] 24+ messages in thread
* RE: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
2020-07-02 18:29 ` Laurent Pinchart
@ 2020-07-07 2:26 ` Anson Huang
-1 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-07 2:26 UTC (permalink / raw)
To: Laurent Pinchart
Cc: mturquette, sboyd, shawnguo, s.hauer, kernel, festevam,
Aisheng Dong, arnd, Peng Fan, Abel Vesa, j.remmet, sfr,
georg.waibel, Georg.Waibel, Fancy Fang, Andy Duan, Daniel Baluta,
yuehaibing, Horia Geanta, andrew.smirnov, linux-clk,
linux-kernel, linux-arm-kernel, dl-linux-imx
Hi, Laurent
> Subject: Re: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms
> clock driver as module
>
> Hi Anson,
>
> On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> > Nowdays, there are more and more requirements of building SoC specific
> > drivers as modules, such as Android GKI (generic kernel image), this
> > patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as
> > modules,
>
> I'm curious, how does the system boot to userspace to be able to load
> modules without clock support in the kernel ? What if the driver for the device
> storing the rootfs cope with clocks not being available ? Does this require an
> initramfs with the clock module ? Even then, how does the serial port driver
> cope with not having clocks ?
Yes, this requires an initramfs, and in the initramfs, it will insmod those .ko with
correct sequence, as per my test and Android GKI test from our Andoird team,
the clock and pinctrl need to be insmod first, then the debug console, then other
module devices....And this patch series ONLY provides the capability of loadable
clock module for this scenario, Linux will still use built-in by default.
Thanks,
Anson
^ permalink raw reply [flat|nested] 24+ messages in thread
* RE: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module
@ 2020-07-07 2:26 ` Anson Huang
0 siblings, 0 replies; 24+ messages in thread
From: Anson Huang @ 2020-07-07 2:26 UTC (permalink / raw)
To: Laurent Pinchart
Cc: Peng Fan, mturquette, Fancy Fang, festevam, linux-clk, sfr,
Abel Vesa, Horia Geanta, andrew.smirnov, yuehaibing,
georg.waibel, dl-linux-imx, Georg.Waibel, arnd, s.hauer,
Daniel Baluta, linux-arm-kernel, Aisheng Dong, Andy Duan, sboyd,
linux-kernel, kernel, shawnguo, j.remmet
Hi, Laurent
> Subject: Re: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms
> clock driver as module
>
> Hi Anson,
>
> On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> > Nowdays, there are more and more requirements of building SoC specific
> > drivers as modules, such as Android GKI (generic kernel image), this
> > patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as
> > modules,
>
> I'm curious, how does the system boot to userspace to be able to load
> modules without clock support in the kernel ? What if the driver for the device
> storing the rootfs cope with clocks not being available ? Does this require an
> initramfs with the clock module ? Even then, how does the serial port driver
> cope with not having clocks ?
Yes, this requires an initramfs, and in the initramfs, it will insmod those .ko with
correct sequence, as per my test and Android GKI test from our Andoird team,
the clock and pinctrl need to be insmod first, then the debug console, then other
module devices....And this patch series ONLY provides the capability of loadable
clock module for this scenario, Linux will still use built-in by default.
Thanks,
Anson
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 24+ messages in thread
end of thread, other threads:[~2020-07-07 2:29 UTC | newest]
Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-02 15:23 [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module Anson Huang
2020-07-02 15:23 ` Anson Huang
2020-07-02 15:23 ` [PATCH V5 1/6] clk: composite: Export clk_hw_register_composite() Anson Huang
2020-07-02 15:23 ` Anson Huang
2020-07-02 15:23 ` [PATCH V5 2/6] clk: imx: Support module build for i.MX5/6/7 and vf610 Anson Huang
2020-07-02 15:23 ` Anson Huang
2020-07-02 15:23 ` [PATCH V5 3/6] clk: imx: Support building i.MX common clock driver as module Anson Huang
2020-07-02 15:23 ` Anson Huang
2020-07-02 15:23 ` [PATCH V5 4/6] clk: imx: Add clock configuration for ARMv7 platforms Anson Huang
2020-07-02 15:23 ` Anson Huang
2020-07-03 7:15 ` kernel test robot
2020-07-03 17:25 ` kernel test robot
2020-07-04 1:36 ` kernel test robot
2020-07-04 8:48 ` Arnd Bergmann
2020-07-04 9:22 ` Anson Huang
2020-07-02 15:24 ` [PATCH V5 5/6] clk: imx8m: Support module build Anson Huang
2020-07-02 15:24 ` Anson Huang
2020-07-02 15:24 ` [PATCH V5 6/6] clk: imx8qxp: Support building i.MX8QXP clock driver as module Anson Huang
2020-07-02 15:24 ` Anson Huang
2020-07-03 19:41 ` kernel test robot
2020-07-02 18:29 ` [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms " Laurent Pinchart
2020-07-02 18:29 ` Laurent Pinchart
2020-07-07 2:26 ` Anson Huang
2020-07-07 2:26 ` Anson Huang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.