linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Anson Huang <anson.huang@nxp.com>
To: Dong Aisheng <dongas86@gmail.com>, Arnd Bergmann <arnd@arndb.de>
Cc: Aisheng Dong <aisheng.dong@nxp.com>,
	Stephen Rothwell <sfr@canb.auug.org.au>,
	Peng Fan <peng.fan@nxp.com>,
	linux-clk <linux-clk@vger.kernel.org>,
	Andy Duan <fugang.duan@nxp.com>, Abel Vesa <abel.vesa@nxp.com>,
	Stefan Agner <stefan.agner@toradex.com>,
	Stephen Boyd <sboyd@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
	Sascha Hauer <s.hauer@pengutronix.de>,
	YueHaibing <yuehaibing@huawei.com>,
	Russell King - ARM Linux <linux@armlinux.org.uk>,
	Daniel Baluta <daniel.baluta@nxp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"oleksandr.suvorov@toradex.com" <oleksandr.suvorov@toradex.com>,
	Al Viro <viro@zeniv.linux.org.uk>,
	Sascha Hauer <kernel@pengutronix.de>,
	Fabio Estevam <festevam@gmail.com>,
	Michael Turquette <mturquette@baylibre.com>,
	Linux ARM <linux-arm-kernel@lists.infradead.org>,
	dl-linux-imx <linux-imx@nxp.com>
Subject: RE: [PATCH V3 04/10] clk: imx: Support building SCU clock driver as module
Date: Wed, 1 Jul 2020 07:19:47 +0000	[thread overview]
Message-ID: <DB3PR0402MB3916E820EA1E9884DD0A08CFF56C0@DB3PR0402MB3916.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <CAA+hA=TYuSk=P4D_D0_Rv1O2AAB3UvYrNXToptPJjEsjECquUw@mail.gmail.com>

Hi, Arnd


> Subject: Re: [PATCH V3 04/10] clk: imx: Support building SCU clock driver as
> module
> 
> On Tue, Jun 30, 2020 at 5:16 AM Anson Huang <anson.huang@nxp.com>
> wrote:
> >
> > Hi, Arnd
> >
> >
> > > Subject: Re: [PATCH V3 04/10] clk: imx: Support building SCU clock
> > > driver as module
> > >
> > > On Mon, Jun 29, 2020 at 4:52 PM Anson Huang <anson.huang@nxp.com>
> > > wrote:
> > > > > Subject: Re: [PATCH V3 04/10] clk: imx: Support building SCU
> > > > > clock driver as module On Mon, Jun 29, 2020 at 2:53 PM Anson
> > > > > Huang
> > > <anson.huang@nxp.com> wrote:
> > > > >
> > > > > Sorry, I misread the patch in multiple ways. First of all, you
> > > > > already put clk-scu.o and clk-lpcg-scu.o files into a combined
> > > > > loadable module, and I had only looked at clk-scu.c.
> > > > >
> > > > > What I actually meant here was to link clk-scu.o together with
> > > > > clk-imx8qxp.o (and possibly future chip-specific files) into a
> > > > > loadable module and drop the export.
> > > >
> > > > Sorry, could you please advise more details about how to do it in
> Makefile?
> > > > I tried below but it looks like NOT working. multiple definition
> > > > of
> > > module_init() error reported.
> > > >
> > > > obj-$(CONFIG_MXC_CLK_SCU) := clk-imx.o clk-imx-y += clk-scu.o
> > > > clk-lpcg-scu.o
> > > > clk-imx-$(CONFIG_CLK_IMX8QXP) += clk-imx8qxp.o clk-imx8qxp-lpcg.o
> > >
> > > Right, you can't have multiple module_init() in a module, so what I
> > > suggested earlier won't work any more as soon as you add a second
> > > chip that uses the clk-scu driver, and then you have to use separate
> > > modules, or some hack that calls the init functions one at a time, which is
> probably worse.
> > >
> > > If it's only imx8qxp, you can do it like this:
> > >
> > > obj-$(CONFIG_MXC_CLK_SCU) := clk-imx-scu.o clk-imx-lpcg.o
> > > clk-imx-scu-y         += clk-scu.o clk-imx8qxp.o
> > > clk-imx-lpcq-scu-y += clk-lpcg-scu.o clk-imx8qxp-lpcg.o
> > >
> > > If you already know that the scu driver is going to be used in
> > > future chips, then just stay with what you have now, using a
> > > separate module per file, exporting the symbols as needed.
> > >
> >
> > Thanks, and yes, I know that scu clk driver will be used for future
> > i.MX8X chips with SCU inside, the current i.MX8QXP clock driver can
> > NOT cover all i.MX8X chips, so I will stay with the exporting symbols.
> >
> 
> SCU clock driver is a common driver for all SCU based platforms.
> Current i.MX8QXP SCU clock driver will be extended to support all future SCU
> based platforms.
> So theoretically clk-scu.o and clk-imx8qxp.o can be combined. LPCG  is
> similar.
> Maybe you can give a try as Arnd suggested.
> 

Do we really need to link clk-scu and i.MX8QXP clock driver together just to avoid some export?
I met some build issues if using this method, the i.MX8QXP module build is OK, but other platforms
like i.MX8MM/i.MX8MN/i.MX8MQ/i.MX8MP clock drivers are just skipped for build, even these
i.MX8M clock config are existing in .config, anyone know why? Looks like the change in Makefile for
i.MX8QXP clock driver introduce this issue.

I think doing such big change in order to save some exports looks like NOT that worth, is it acceptable
to just keep the original one in Makefile, just to have mxc-clk.ko, clk-scu.ko and clk-imx8qxp.ko etc..

thanks,
Anson

.config:
CONFIG_MXC_CLK=m
CONFIG_MXC_CLK_SCU=m
CONFIG_CLK_IMX8MM=m
CONFIG_CLK_IMX8MN=m
CONFIG_CLK_IMX8MP=m
CONFIG_CLK_IMX8MQ=m
CONFIG_CLK_IMX8QXP=m

Makefile:
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_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_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

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-07-01  7:22 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-29  5:53 [PATCH V3 00/10] Support building i.MX8 SoCs clock driver as module Anson Huang
2020-06-29  5:53 ` [PATCH V3 01/10] clk: composite: Export clk_hw_register_composite() Anson Huang
2020-06-29  5:53 ` [PATCH V3 02/10] init.h: Fix the __setup_param() macro for module build Anson Huang
2020-06-29 11:33   ` Arnd Bergmann
2020-06-29 11:40     ` Anson Huang
2020-06-29 11:58       ` Arnd Bergmann
2020-07-01  5:14         ` Anson Huang
2020-07-01  8:37           ` Arnd Bergmann
2020-07-01  9:27             ` Anson Huang
2020-07-01  9:53               ` Arnd Bergmann
2020-07-01 10:02                 ` Anson Huang
2020-07-01 10:13                   ` Arnd Bergmann
2020-07-01 10:20                     ` Anson Huang
2020-06-29  5:53 ` [PATCH V3 03/10] ARM: imx: Select MXC_CLK for each SoC Anson Huang
2020-06-29  7:27   ` Aisheng Dong
2020-06-29  8:21     ` Anson Huang
2020-06-29  5:53 ` [PATCH V3 04/10] clk: imx: Support building SCU clock driver as module Anson Huang
2020-06-29 11:37   ` Arnd Bergmann
2020-06-29 12:53     ` Anson Huang
2020-06-29 13:20       ` Arnd Bergmann
2020-06-29 14:52         ` Anson Huang
2020-06-29 15:08           ` Arnd Bergmann
2020-06-29 15:19             ` Anson Huang
2020-06-30  3:55               ` Dong Aisheng
2020-07-01  7:19                 ` Anson Huang [this message]
2020-07-01  8:46                   ` Arnd Bergmann
2020-07-01  9:28                     ` Anson Huang
2020-07-01  9:40                       ` Anson Huang
2020-07-01  9:54                         ` Arnd Bergmann
2020-06-30  3:36         ` Dong Aisheng
2020-06-29  5:53 ` [PATCH V3 05/10] clk: imx: Support building i.MX common " Anson Huang
2020-06-29  5:53 ` [PATCH V3 06/10] clk: imx8mm: Support module build Anson Huang
2020-06-29  5:53 ` [PATCH V3 07/10] clk: imx8mn: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 08/10] clk: imx8mp: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 09/10] clk: imx8mq: " Anson Huang
2020-06-29  5:54 ` [PATCH V3 10/10] clk: imx8qxp: " Anson Huang
2020-06-29 11:40   ` Arnd Bergmann
2020-06-29 11:43     ` Anson Huang
2020-06-29 11:58       ` Arnd Bergmann

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DB3PR0402MB3916E820EA1E9884DD0A08CFF56C0@DB3PR0402MB3916.eurprd04.prod.outlook.com \
    --to=anson.huang@nxp.com \
    --cc=abel.vesa@nxp.com \
    --cc=aisheng.dong@nxp.com \
    --cc=arnd@arndb.de \
    --cc=daniel.baluta@nxp.com \
    --cc=dongas86@gmail.com \
    --cc=festevam@gmail.com \
    --cc=fugang.duan@nxp.com \
    --cc=kernel@pengutronix.de \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=mturquette@baylibre.com \
    --cc=oleksandr.suvorov@toradex.com \
    --cc=peng.fan@nxp.com \
    --cc=s.hauer@pengutronix.de \
    --cc=sboyd@kernel.org \
    --cc=sfr@canb.auug.org.au \
    --cc=shawnguo@kernel.org \
    --cc=stefan.agner@toradex.com \
    --cc=viro@zeniv.linux.org.uk \
    --cc=yuehaibing@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).