[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <DB3PR0402MB39167FB012D9BCB4A5081BEDF5950@DB3PR0402MB3916.eurprd04.prod.outlook.com>
Date: Wed, 24 Jun 2020 02:36:16 +0000
From: Anson Huang <anson.huang@....com>
To: Aisheng Dong <aisheng.dong@....com>,
Stephen Boyd <sboyd@...nel.org>, Abel Vesa <abel.vesa@....com>,
Andy Duan <fugang.duan@....com>,
Daniel Baluta <daniel.baluta@....com>,
Leonard Crestez <leonard.crestez@....com>,
Peng Fan <peng.fan@....com>,
Stefan Agner <stefan.agner@...adex.com>,
"allison@...utok.net" <allison@...utok.net>,
"arnd@...db.de" <arnd@...db.de>,
"festevam@...il.com" <festevam@...il.com>,
"gregkh@...uxfoundation.org" <gregkh@...uxfoundation.org>,
"info@...ux.net" <info@...ux.net>,
"kernel@...gutronix.de" <kernel@...gutronix.de>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"linux-clk@...r.kernel.org" <linux-clk@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux@...linux.org.uk" <linux@...linux.org.uk>,
"mturquette@...libre.com" <mturquette@...libre.com>,
"oleksandr.suvorov@...adex.com" <oleksandr.suvorov@...adex.com>,
"s.hauer@...gutronix.de" <s.hauer@...gutronix.de>,
"sfr@...b.auug.org.au" <sfr@...b.auug.org.au>,
"shawnguo@...nel.org" <shawnguo@...nel.org>,
"tglx@...utronix.de" <tglx@...utronix.de>,
"yuehaibing@...wei.com" <yuehaibing@...wei.com>
CC: dl-linux-imx <linux-imx@....com>
Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock driver as
module
> Subject: RE: [PATCH V2 3/9] clk: imx: Support building SCU clock driver as
> module
>
> > From: Stephen Boyd <sboyd@...nel.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@...nel.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@...nel.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@....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?
Anson
Powered by blists - more mailing lists