> From: Stephen Boyd <sb...@kernel.org> > Sent: Tuesday, June 23, 2020 4:34 PM > Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock driver as > module > > Quoting Aisheng Dong (2020-06-22 20:42:19) > > > From: Stephen Boyd <sb...@kernel.org> > > > Sent: Saturday, June 20, 2020 11:28 AM > > > Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock > > > driver as module > > > > > > Quoting Aisheng Dong (2020-06-17 18:58:51) > > > > > From: Anson Huang <anson.hu...@nxp.com> > > > > > > > +obj-$(CONFIG_MXC_CLK_SCU) += mxc-clk-scu.o > > > > > > > > > > > > Like i.MX pinctrl, I'm not sure if it's really necessary to > > > > > > build core libraries as modules. Probably the simplest way is > > > > > > only building platform drivers part as module. And leave those > > > > > > core libraries > > > built in kernel. > > > > > > This may make the code a bit cleaner. > > > > > > > > > > > > > > > > Will discuss this with Linaro guys about it, previous > > > > > requirement I received is all SoC specific modules need to be built as > module. > > > > > > > > > > > > > Okay. AFAIK it's not conflict. > > > > You still make drivers into modules. > > > > Only difference is for those common libraries part, we don't > > > > convert them into module Which is less meaningless. > > > > > > > > > > What is the benefit of making the core part of the SoC driver not a > > > module? > > > > Usually we could try to build it as module if it's not hard. > > > > One question is sometimes those core part are shared with some platforms > which can't built as module. > > For i.MX case, it's mainly patch 4: > > [V2,4/9] clk: imx: Support building i.MX common clock driver as module > > > > > > Those libraries are also used by i.MX6&7 which can't build as module. > > So we need an extra workaround patch to forcely 'select' it under > > arch/arm/mach-imx/Kconfig [V2,2/9] ARM: imx: Select MXC_CLK for > > ARCH_MXC > > Then the users can't configure it as module in order to not break build. > > > > If build-in those common libraries, the implementation could be a bit easier > and cleaner. > > So I'm not sure if we still have to build them as module. > > How would you suggest for such case? > > Stop using 'select MXC_CLK' when requiring the core library code? > Instead, make it a 'depends' and then that will make depending modules (i.e. > the > SoC files) that want to be builtin force the core module to be builtin too. > Other > modular configs that depend on the core will still be modular. >
It seems not work. Patch 4 already changes it to depend on ARCH_MXC which can only be 'Y'. [V2,4/9] clk: imx: Support building i.MX common clock driver as module diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig index ded0643..678113b 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 But user can still set MXC_CLK to be m, either via make menuconfig or defconfig. Looks like only select it in arch Kconfig in Patch 2, there will be no issue. diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index e7d7b90..47b10d2 100644 --- a/arch/arm/mach-imx/Kconfig +++ b/arch/arm/mach-imx/Kconfig @@ -4,6 +4,7 @@ menuconfig ARCH_MXC depends on ARCH_MULTI_V4_V5 || ARCH_MULTI_V6_V7 || ARM_SINGLE_ARMV7M select ARCH_SUPPORTS_BIG_ENDIAN select CLKSRC_IMX_GPT + select MXC_CLK select GENERIC_IRQ_CHIP select GPIOLIB select PINCTRL > I don't know why an architecture is selecting the clk code at all to be > honest. > That can be moved to the defconfig instead of in the architecture Kconfig and > then you don't get a working system unless you select the MXC_CLK config from > the configurator tool (menuconfig, nconfig, etc.) So ARCH_MXC shouldn't be in > this discussion and the core module should be selectable by the configurator > and that should be tristate and all SoC modules should depend on that core > library module and be selectable too and those Kconfigs can be tristate or > bool. I guess it is because we didn't have requirements to make minimum booting required drivers to be built as module before. Regards Aisheng