diff mbox series

[V2,2/9] ARM: imx: Select MXC_CLK for ARCH_MXC

Message ID 1591687933-19495-3-git-send-email-Anson.Huang@nxp.com
State New
Headers show
Series Support building i.MX8 SoCs clock driver as module | expand

Commit Message

Anson Huang June 9, 2020, 7:32 a.m. UTC
i.MX common clock drivers may support module build, so it is NOT
selected by default, for ARCH_MXC ARMv7 platforms, need to select
it manually to make build pass.

Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
---
No change.
---
 arch/arm/mach-imx/Kconfig | 1 +
 1 file changed, 1 insertion(+)

Comments

Dong Aisheng June 17, 2020, 10:34 a.m. UTC | #1
> From: Anson Huang <Anson.Huang@nxp.com>
> Sent: Tuesday, June 9, 2020 3:32 PM
> 
> i.MX common clock drivers may support module build, so it is NOT selected by
> default, for ARCH_MXC ARMv7 platforms, need to select it manually to make
> build pass.
> 
> Signed-off-by: Anson Huang <Anson.Huang@nxp.com>

Can't the original def_xxx work?

config MXC_CLK
        tristate
        def_tristate ARCH_MXC

Regards
Aisheng

> ---
> No change.
> ---
>  arch/arm/mach-imx/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> 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
> --
> 2.7.4
Anson Huang June 17, 2020, 12:36 p.m. UTC | #2
> Subject: RE: [PATCH V2 2/9] ARM: imx: Select MXC_CLK for ARCH_MXC
> 
> > From: Anson Huang <Anson.Huang@nxp.com>
> > Sent: Tuesday, June 9, 2020 3:32 PM
> >
> > i.MX common clock drivers may support module build, so it is NOT
> > selected by default, for ARCH_MXC ARMv7 platforms, need to select it
> > manually to make build pass.
> >
> > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> 
> Can't the original def_xxx work?
> 
> config MXC_CLK
>         tristate
>         def_tristate ARCH_MXC

Such change will make MXC_CLK=y even all i.MX8 SoCs clock drivers are selected as module,
so it does NOT meet the requirement of module support. Below is from .config when all
i.MX8 SoCs clock drivers are configured to module.

 CONFIG_MXC_CLK=y
 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

Anson
Dong Aisheng June 18, 2020, 3:09 a.m. UTC | #3
> From: Anson Huang <anson.huang@nxp.com>
> Sent: Wednesday, June 17, 2020 8:36 PM
> 
> > Subject: RE: [PATCH V2 2/9] ARM: imx: Select MXC_CLK for ARCH_MXC
> >
> > > From: Anson Huang <Anson.Huang@nxp.com>
> > > Sent: Tuesday, June 9, 2020 3:32 PM
> > >
> > > i.MX common clock drivers may support module build, so it is NOT
> > > selected by default, for ARCH_MXC ARMv7 platforms, need to select it
> > > manually to make build pass.
> > >
> > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> >
> > Can't the original def_xxx work?
> >
> > config MXC_CLK
> >         tristate
> >         def_tristate ARCH_MXC
> 
> Such change will make MXC_CLK=y even all i.MX8 SoCs clock drivers are selected
> as module, so it does NOT meet the requirement of module support. Below is
> from .config when all
> i.MX8 SoCs clock drivers are configured to module.
> 
>  CONFIG_MXC_CLK=y
>  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
> 

It works at my side.
Below is my changes based on your patchset:
$ git diff
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 47b10d20f411..e7d7b90e2cf8 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -4,7 +4,6 @@ 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
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 26cedbfe386c..f7b3e3a2cb9f 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -3,6 +3,7 @@
 config MXC_CLK
        tristate "IMX clock"
        depends on ARCH_MXC
+       def_tristate ARCH_MXC
 
 config MXC_CLK_SCU
        tristate "IMX SCU clock"

Regards
Aisheng

> Anson
Anson Huang June 18, 2020, 3:18 a.m. UTC | #4
> -----Original Message-----
> From: Aisheng Dong <aisheng.dong@nxp.com>
> Sent: 2020年6月18日 11:09
> To: Anson Huang <anson.huang@nxp.com>; linux@armlinux.org.uk;
> shawnguo@kernel.org; s.hauer@pengutronix.de; kernel@pengutronix.de;
> festevam@gmail.com; mturquette@baylibre.com; sboyd@kernel.org;
> oleksandr.suvorov@toradex.com; Stefan Agner <stefan.agner@toradex.com>;
> arnd@arndb.de; Abel Vesa <abel.vesa@nxp.com>; Peng Fan
> <peng.fan@nxp.com>; tglx@linutronix.de; allison@lohutok.net;
> gregkh@linuxfoundation.org; info@metux.net; Leonard Crestez
> <leonard.crestez@nxp.com>; Andy Duan <fugang.duan@nxp.com>; Daniel
> Baluta <daniel.baluta@nxp.com>; yuehaibing@huawei.com;
> sfr@canb.auug.org.au; linux-arm-kernel@lists.infradead.org;
> linux-kernel@vger.kernel.org; linux-clk@vger.kernel.org
> Cc: dl-linux-imx <linux-imx@nxp.com>
> Subject: RE: [PATCH V2 2/9] ARM: imx: Select MXC_CLK for ARCH_MXC
> 
> > From: Anson Huang <anson.huang@nxp.com>
> > Sent: Wednesday, June 17, 2020 8:36 PM
> >
> > > Subject: RE: [PATCH V2 2/9] ARM: imx: Select MXC_CLK for ARCH_MXC
> > >
> > > > From: Anson Huang <Anson.Huang@nxp.com>
> > > > Sent: Tuesday, June 9, 2020 3:32 PM
> > > >
> > > > i.MX common clock drivers may support module build, so it is NOT
> > > > selected by default, for ARCH_MXC ARMv7 platforms, need to select
> > > > it manually to make build pass.
> > > >
> > > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > >
> > > Can't the original def_xxx work?
> > >
> > > config MXC_CLK
> > >         tristate
> > >         def_tristate ARCH_MXC
> >
> > Such change will make MXC_CLK=y even all i.MX8 SoCs clock drivers are
> > selected as module, so it does NOT meet the requirement of module
> > support. Below is from .config when all
> > i.MX8 SoCs clock drivers are configured to module.
> >
> >  CONFIG_MXC_CLK=y
> >  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
> >
> 
> It works at my side.
> Below is my changes based on your patchset:
> $ git diff
> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index
> 47b10d20f411..e7d7b90e2cf8 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -4,7 +4,6 @@ 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
> diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig index
> 26cedbfe386c..f7b3e3a2cb9f 100644
> --- a/drivers/clk/imx/Kconfig
> +++ b/drivers/clk/imx/Kconfig
> @@ -3,6 +3,7 @@
>  config MXC_CLK
>         tristate "IMX clock"
>         depends on ARCH_MXC
> +       def_tristate ARCH_MXC
> 
>  config MXC_CLK_SCU
>         tristate "IMX SCU clock"
> 

I guess you tried imx_v6_v7_defconfig? It does NOT work for ARM64 defconfig when we try to make
CONFIG_MXC_CLK=m, Below are my change, you can see in .config, even all i.MX8 SoCs clock drivers
are configured to module, the CONFIG_MXC_CLK is still =y, but the expected result is =m.

BTW, all i.MX8 SoCs select MXC_CLK in their kconfig, this patch just does the same thing for i.MX6/7
in common place.

diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 47b10d2..e7d7b90 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -4,7 +4,6 @@ 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
diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig
index 8222e4b..21e2dbb 100644
--- a/arch/arm64/configs/defconfig
+++ b/arch/arm64/configs/defconfig
@@ -799,11 +799,11 @@ CONFIG_COMMON_CLK_S2MPS11=y
 CONFIG_COMMON_CLK_PWM=y
 CONFIG_COMMON_CLK_VC5=y
 CONFIG_CLK_RASPBERRYPI=m
-CONFIG_CLK_IMX8MM=y
-CONFIG_CLK_IMX8MN=y
-CONFIG_CLK_IMX8MP=y
-CONFIG_CLK_IMX8MQ=y
-CONFIG_CLK_IMX8QXP=y
+CONFIG_CLK_IMX8MM=m
+CONFIG_CLK_IMX8MN=m
+CONFIG_CLK_IMX8MP=m
+CONFIG_CLK_IMX8MQ=m
+CONFIG_CLK_IMX8QXP=m
 CONFIG_TI_SCI_CLK=y
 CONFIG_COMMON_CLK_QCOM=y
 CONFIG_QCOM_A53PLL=y
diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig
index 26cedbf..f7b3e3a 100644
--- a/drivers/clk/imx/Kconfig
+++ b/drivers/clk/imx/Kconfig
@@ -3,6 +3,7 @@
 config MXC_CLK
        tristate "IMX clock"
        depends on ARCH_MXC
+       def_tristate ARCH_MXC

 config MXC_CLK_SCU
        tristate "IMX SCU clock"

.config:
 CONFIG_MXC_CLK=y
 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

Anson
Dong Aisheng June 18, 2020, 3:58 a.m. UTC | #5
> From: Anson Huang <anson.huang@nxp.com>
> Sent: Thursday, June 18, 2020 11:18 AM
> 
> > From: Aisheng Dong <aisheng.dong@nxp.com>
> > Sent: 2020年6月18日 11:09
> >
> > > From: Anson Huang <anson.huang@nxp.com>
> > > Sent: Wednesday, June 17, 2020 8:36 PM
> > >
> > > > Subject: RE: [PATCH V2 2/9] ARM: imx: Select MXC_CLK for ARCH_MXC
> > > >
> > > > > From: Anson Huang <Anson.Huang@nxp.com>
> > > > > Sent: Tuesday, June 9, 2020 3:32 PM
> > > > >
> > > > > i.MX common clock drivers may support module build, so it is NOT
> > > > > selected by default, for ARCH_MXC ARMv7 platforms, need to
> > > > > select it manually to make build pass.
> > > > >
> > > > > Signed-off-by: Anson Huang <Anson.Huang@nxp.com>
> > > >
> > > > Can't the original def_xxx work?
> > > >
> > > > config MXC_CLK
> > > >         tristate
> > > >         def_tristate ARCH_MXC
> > >
> > > Such change will make MXC_CLK=y even all i.MX8 SoCs clock drivers
> > > are selected as module, so it does NOT meet the requirement of
> > > module support. Below is from .config when all
> > > i.MX8 SoCs clock drivers are configured to module.
> > >
> > >  CONFIG_MXC_CLK=y
> > >  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
> > >
> >
> > It works at my side.
> > Below is my changes based on your patchset:
> > $ git diff
> > diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
> > index
> > 47b10d20f411..e7d7b90e2cf8 100644
> > --- a/arch/arm/mach-imx/Kconfig
> > +++ b/arch/arm/mach-imx/Kconfig
> > @@ -4,7 +4,6 @@ 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
> > diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig index
> > 26cedbfe386c..f7b3e3a2cb9f 100644
> > --- a/drivers/clk/imx/Kconfig
> > +++ b/drivers/clk/imx/Kconfig
> > @@ -3,6 +3,7 @@
> >  config MXC_CLK
> >         tristate "IMX clock"
> >         depends on ARCH_MXC
> > +       def_tristate ARCH_MXC
> >
> >  config MXC_CLK_SCU
> >         tristate "IMX SCU clock"
> >
> 
> I guess you tried imx_v6_v7_defconfig? It does NOT work for ARM64 defconfig
> when we try to make CONFIG_MXC_CLK=m, Below are my change, you can see
> in .config, even all i.MX8 SoCs clock drivers are configured to module, the
> CONFIG_MXC_CLK is still =y, but the expected result is =m.
> 

It works at my side because it can manually selected as m or add CONFIG_MXC_CLK=m
In defconfig.
But now I got your point you want CONFIG_MXC_CLK default to m once define
CONFIG_CLK_IMX8X=m in defconfig.

> BTW, all i.MX8 SoCs select MXC_CLK in their kconfig, this patch just does the
> same thing for i.MX6/7 in common place.
> 

I just noticed for MX6&7, actually CONFIG_MXC_CLK can't be m otherwise we will meet build break.
That means CONFIG_MXC_CLK cannot be configurable by users for non-ARM64 platforms.
Thus can't use def_tristate and we still need select it under ARCH_MXC.
This lightly lose a bit meaning to make this core library as module.

IMHO I'd still prefer to builtin those core libraries rather than convert to module.

Regards
Aisheng

> diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig index
> 47b10d2..e7d7b90 100644
> --- a/arch/arm/mach-imx/Kconfig
> +++ b/arch/arm/mach-imx/Kconfig
> @@ -4,7 +4,6 @@ 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
> diff --git a/arch/arm64/configs/defconfig b/arch/arm64/configs/defconfig index
> 8222e4b..21e2dbb 100644
> --- a/arch/arm64/configs/defconfig
> +++ b/arch/arm64/configs/defconfig
> @@ -799,11 +799,11 @@ CONFIG_COMMON_CLK_S2MPS11=y
> CONFIG_COMMON_CLK_PWM=y  CONFIG_COMMON_CLK_VC5=y
> CONFIG_CLK_RASPBERRYPI=m -CONFIG_CLK_IMX8MM=y
> -CONFIG_CLK_IMX8MN=y -CONFIG_CLK_IMX8MP=y -CONFIG_CLK_IMX8MQ=y
> -CONFIG_CLK_IMX8QXP=y
> +CONFIG_CLK_IMX8MM=m
> +CONFIG_CLK_IMX8MN=m
> +CONFIG_CLK_IMX8MP=m
> +CONFIG_CLK_IMX8MQ=m
> +CONFIG_CLK_IMX8QXP=m
>  CONFIG_TI_SCI_CLK=y
>  CONFIG_COMMON_CLK_QCOM=y
>  CONFIG_QCOM_A53PLL=y
> diff --git a/drivers/clk/imx/Kconfig b/drivers/clk/imx/Kconfig index
> 26cedbf..f7b3e3a 100644
> --- a/drivers/clk/imx/Kconfig
> +++ b/drivers/clk/imx/Kconfig
> @@ -3,6 +3,7 @@
>  config MXC_CLK
>         tristate "IMX clock"
>         depends on ARCH_MXC
> +       def_tristate ARCH_MXC
> 
>  config MXC_CLK_SCU
>         tristate "IMX SCU clock"
> 
> .config:
>  CONFIG_MXC_CLK=y
>  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
> 
> Anson
diff mbox series

Patch

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