mbox series

[V5,0/6] Support building i.MX ARMv7/ARMv8 platforms clock driver as module

Message ID 1593703441-16944-1-git-send-email-Anson.Huang@nxp.com (mailing list archive)
Headers show
Series Support building i.MX ARMv7/ARMv8 platforms clock driver as module | expand

Message

Anson Huang July 2, 2020, 3:23 p.m. UTC
Nowdays, there are more and more requirements of building SoC specific
drivers as modules, such as Android GKI (generic kernel image), this
patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,

The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
various build options, and i.MX1/2/3 platforms now still ONLY support built-in
as they are rarely used now.

Changes since V4:
	- add empty function of imx_register_uart_clocks() for MODULE build, then
	  all earlycon related clock handler can be built-out for MODULE;
	- add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
	- add COMPILE_TEST for ARMv8 platforms;
	- keep using builtin_platform_driver() for i.MX8QXP clock driver.

Anson Huang (6):
  clk: composite: Export clk_hw_register_composite()
  clk: imx: Support module build for i.MX5/6/7 and vf610
  clk: imx: Support building i.MX common clock driver as module
  clk: imx: Add clock configuration for ARMv7 platforms
  clk: imx8m: Support module build
  clk: imx8qxp: Support building i.MX8QXP clock driver as module

 drivers/clk/clk-composite.c        |   1 +
 drivers/clk/imx/Kconfig            | 101 ++++++++++++++++++++++++++++++++-----
 drivers/clk/imx/Makefile           |  79 ++++++++++++++---------------
 drivers/clk/imx/clk-composite-8m.c |   2 +
 drivers/clk/imx/clk-cpu.c          |   2 +
 drivers/clk/imx/clk-frac-pll.c     |   2 +
 drivers/clk/imx/clk-gate2.c        |   2 +
 drivers/clk/imx/clk-imx5.c         |   5 ++
 drivers/clk/imx/clk-imx6q.c        |   5 ++
 drivers/clk/imx/clk-imx6sl.c       |   5 ++
 drivers/clk/imx/clk-imx6sll.c      |   5 ++
 drivers/clk/imx/clk-imx6sx.c       |   5 ++
 drivers/clk/imx/clk-imx6ul.c       |   5 ++
 drivers/clk/imx/clk-imx7d.c        |   5 ++
 drivers/clk/imx/clk-imx7ulp.c      |   5 ++
 drivers/clk/imx/clk-imx8mm.c       |   4 ++
 drivers/clk/imx/clk-imx8mn.c       |   4 ++
 drivers/clk/imx/clk-imx8mp.c       |   4 ++
 drivers/clk/imx/clk-imx8mq.c       |   4 ++
 drivers/clk/imx/clk-imx8qxp-lpcg.c |   4 ++
 drivers/clk/imx/clk-imx8qxp.c      |   4 ++
 drivers/clk/imx/clk-pll14xx.c      |   5 ++
 drivers/clk/imx/clk-sscg-pll.c     |   2 +
 drivers/clk/imx/clk-vf610.c        |   5 ++
 drivers/clk/imx/clk.c              |  17 +++++--
 drivers/clk/imx/clk.h              |   6 +++
 26 files changed, 231 insertions(+), 57 deletions(-)

Comments

Laurent Pinchart July 2, 2020, 6:29 p.m. UTC | #1
Hi Anson,

On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> Nowdays, there are more and more requirements of building SoC specific
> drivers as modules, such as Android GKI (generic kernel image), this
> patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as modules,

I'm curious, how does the system boot to userspace to be able to load
modules without clock support in the kernel ? What if the driver for the
device storing the rootfs cope with clocks not being available ? Does
this require an initramfs with the clock module ? Even then, how does
the serial port driver cope with not having clocks ?

> The CLK_IMXxxx is introduced for i.MX ARMv7 platforms in order to support
> various build options, and i.MX1/2/3 platforms now still ONLY support built-in
> as they are rarely used now.
> 
> Changes since V4:
> 	- add empty function of imx_register_uart_clocks() for MODULE build, then
> 	  all earlycon related clock handler can be built-out for MODULE;
> 	- add module build support for ARMv7 platforms, also add COMPILE_TEST for them;
> 	- add COMPILE_TEST for ARMv8 platforms;
> 	- keep using builtin_platform_driver() for i.MX8QXP clock driver.
> 
> Anson Huang (6):
>   clk: composite: Export clk_hw_register_composite()
>   clk: imx: Support module build for i.MX5/6/7 and vf610
>   clk: imx: Support building i.MX common clock driver as module
>   clk: imx: Add clock configuration for ARMv7 platforms
>   clk: imx8m: Support module build
>   clk: imx8qxp: Support building i.MX8QXP clock driver as module
> 
>  drivers/clk/clk-composite.c        |   1 +
>  drivers/clk/imx/Kconfig            | 101 ++++++++++++++++++++++++++++++++-----
>  drivers/clk/imx/Makefile           |  79 ++++++++++++++---------------
>  drivers/clk/imx/clk-composite-8m.c |   2 +
>  drivers/clk/imx/clk-cpu.c          |   2 +
>  drivers/clk/imx/clk-frac-pll.c     |   2 +
>  drivers/clk/imx/clk-gate2.c        |   2 +
>  drivers/clk/imx/clk-imx5.c         |   5 ++
>  drivers/clk/imx/clk-imx6q.c        |   5 ++
>  drivers/clk/imx/clk-imx6sl.c       |   5 ++
>  drivers/clk/imx/clk-imx6sll.c      |   5 ++
>  drivers/clk/imx/clk-imx6sx.c       |   5 ++
>  drivers/clk/imx/clk-imx6ul.c       |   5 ++
>  drivers/clk/imx/clk-imx7d.c        |   5 ++
>  drivers/clk/imx/clk-imx7ulp.c      |   5 ++
>  drivers/clk/imx/clk-imx8mm.c       |   4 ++
>  drivers/clk/imx/clk-imx8mn.c       |   4 ++
>  drivers/clk/imx/clk-imx8mp.c       |   4 ++
>  drivers/clk/imx/clk-imx8mq.c       |   4 ++
>  drivers/clk/imx/clk-imx8qxp-lpcg.c |   4 ++
>  drivers/clk/imx/clk-imx8qxp.c      |   4 ++
>  drivers/clk/imx/clk-pll14xx.c      |   5 ++
>  drivers/clk/imx/clk-sscg-pll.c     |   2 +
>  drivers/clk/imx/clk-vf610.c        |   5 ++
>  drivers/clk/imx/clk.c              |  17 +++++--
>  drivers/clk/imx/clk.h              |   6 +++
>  26 files changed, 231 insertions(+), 57 deletions(-)
Anson Huang July 7, 2020, 2:26 a.m. UTC | #2
Hi, Laurent

> Subject: Re: [PATCH V5 0/6] Support building i.MX ARMv7/ARMv8 platforms
> clock driver as module
> 
> Hi Anson,
> 
> On Thu, Jul 02, 2020 at 11:23:55PM +0800, Anson Huang wrote:
> > Nowdays, there are more and more requirements of building SoC specific
> > drivers as modules, such as Android GKI (generic kernel image), this
> > patch set supports building i.MX ARMv6/ARMv7 SoCs clock drivers as
> > modules,
> 
> I'm curious, how does the system boot to userspace to be able to load
> modules without clock support in the kernel ? What if the driver for the device
> storing the rootfs cope with clocks not being available ? Does this require an
> initramfs with the clock module ? Even then, how does the serial port driver
> cope with not having clocks ?

Yes, this requires an initramfs, and in the initramfs, it will insmod those .ko with
correct sequence, as per my test and Android GKI test from our Andoird team,
the clock and pinctrl need to be insmod first, then the debug console, then other
module devices....And this patch series ONLY provides the capability of loadable
clock module for this scenario, Linux will still use built-in by default. 

Thanks,
Anson