Messages in this thread | | | From | Aisheng Dong <> | Subject | RE: [PATCH V2 3/9] clk: imx: Support building SCU clock driver as module | Date | Wed, 24 Jun 2020 02:59:09 +0000 |
| |
> From: Anson Huang <anson.huang@nxp.com> > Sent: Wednesday, June 24, 2020 10:36 AM > > > Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock > > driver as module > > > > > From: Stephen Boyd <sboyd@kernel.org> > > > Sent: Wednesday, June 24, 2020 8:58 AM > > > Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock > > > driver as module > > > > > > Quoting Aisheng Dong (2020-06-23 02:00:47) > > > > > From: Stephen Boyd <sboyd@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 <sboyd@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.huang@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. > > > > > > Isn't that what we want? > > > > No, if user set MXC_CLK to m, the build will break for i.MX6&7. > > > > > Why does ARCH_MXC being enabled mandate that it is builtin? Is some > > > architecture level code calling into the clk driver? > > > > > > It's mainly because there's no Kconfig options for i.MX6 &7 clock drivers. > > It just reuses ARCH config CONFIG_SOC_XXX which can only be y. > > e.g. > > obj-$(CONFIG_SOC_IMX6Q) += clk-imx6q.o > > obj-$(CONFIG_SOC_IMX6SL) += clk-imx6sl.o > > obj-$(CONFIG_SOC_IMX7ULP) += clk-imx7ulp.o > > obj-$(CONFIG_SOC_VF610) += clk-vf610.o .. > > > > If setting MXC_CLK to m, the platform clock drivers will fail to build > > due to miss to find symbols defined in the common clock library by > > CONFIG_MXC_CLK. > > So we have to avoid users to be able to config MXC_CLK to m for i.MX6&7. > > Only depends on ARCH_MXC mean user still can set it to m. > > I think for i.MX6/7, although MXC_CLK is tristate, but it is selected by > ARCH_MXC which is always "y", so MXC_CLK can ONLY be "y" even it is explicitly > set to "m" in imx_v6_v7_defconfig file. So that means MXC_CLK can ONLY > support built-in for i.MX6/7 SoCs, and that is what we want? >
Yes, I'm trying to explain to Stephen why we have to select MXC_CLK in ARCH_MXC And what issues we will met if not select it.
Regards Aisheng
> Anson
| |