diff mbox series

clk: meson: enable building as modules

Message ID 20201109233622.23598-1-khilman@baylibre.com (mailing list archive)
State Superseded
Delegated to: Neil Armstrong
Headers show
Series clk: meson: enable building as modules | expand

Commit Message

Kevin Hilman Nov. 9, 2020, 11:36 p.m. UTC
Make it possible to build all clk drivers as modules, but default
remains built-in.

No functional changes.

Signed-off-by: Kevin Hilman <khilman@baylibre.com>
---
Depends on series adding new API to get clk consumer from clk_hw:
https://lore.kernel.org/linux-amlogic/20201021162147.563655-1-jbrunet@baylibre.com/

 drivers/clk/meson/Kconfig       | 7 ++++---
 drivers/clk/meson/axg-aoclk.c   | 5 ++++-
 drivers/clk/meson/axg.c         | 5 ++++-
 drivers/clk/meson/g12a-aoclk.c  | 5 ++++-
 drivers/clk/meson/g12a.c        | 5 ++++-
 drivers/clk/meson/gxbb-aoclk.c  | 5 ++++-
 drivers/clk/meson/gxbb.c        | 5 ++++-
 drivers/clk/meson/meson-aoclk.c | 4 ++++
 drivers/clk/meson/meson-eeclk.c | 3 +++
 9 files changed, 35 insertions(+), 9 deletions(-)

Comments

Jerome Brunet Nov. 10, 2020, 8:31 a.m. UTC | #1
On Tue 10 Nov 2020 at 00:36, Kevin Hilman <khilman@baylibre.com> wrote:

> Make it possible to build all clk drivers as modules, but default
> remains built-in.
>
> No functional changes.
>
> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
> ---
> Depends on series adding new API to get clk consumer from clk_hw:
> https://lore.kernel.org/linux-amlogic/20201021162147.563655-1-jbrunet@baylibre.com/

and

https://lore.kernel.org/r/20201021163847.595189-1-jbrunet@baylibre.com

Once these notifier allocations are dealt with, I'm happy to take this.

One minor details though ...

>
>  drivers/clk/meson/Kconfig       | 7 ++++---
>  drivers/clk/meson/axg-aoclk.c   | 5 ++++-
>  drivers/clk/meson/axg.c         | 5 ++++-
>  drivers/clk/meson/g12a-aoclk.c  | 5 ++++-
>  drivers/clk/meson/g12a.c        | 5 ++++-
>  drivers/clk/meson/gxbb-aoclk.c  | 5 ++++-
>  drivers/clk/meson/gxbb.c        | 5 ++++-
>  drivers/clk/meson/meson-aoclk.c | 4 ++++
>  drivers/clk/meson/meson-eeclk.c | 3 +++
>  9 files changed, 35 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig
> index 034da203e8e0..fc002c155bc3 100644
> --- a/drivers/clk/meson/Kconfig
> +++ b/drivers/clk/meson/Kconfig
> @@ -58,7 +58,7 @@ config COMMON_CLK_MESON8B
>  	  want peripherals and CPU frequency scaling to work.
>  
>  config COMMON_CLK_GXBB
> -	bool "GXBB and GXL SoC clock controllers support"
> +	tristate "GXBB and GXL SoC clock controllers support"
>  	depends on ARM64
>  	default y
>  	select COMMON_CLK_MESON_REGMAP
> @@ -74,7 +74,7 @@ config COMMON_CLK_GXBB
>  	  Say Y if you want peripherals and CPU frequency scaling to work.
>  
>  config COMMON_CLK_AXG
> -	bool "AXG SoC clock controllers support"
> +	tristate "AXG SoC clock controllers support"
>  	depends on ARM64
>  	default y
>  	select COMMON_CLK_MESON_REGMAP
> @@ -100,7 +100,7 @@ config COMMON_CLK_AXG_AUDIO
>  	  aka axg, Say Y if you want audio subsystem to work.
>  
>  config COMMON_CLK_G12A
> -	bool "G12 and SM1 SoC clock controllers support"
> +	tristate "G12 and SM1 SoC clock controllers support"
>  	depends on ARM64
>  	default y
>  	select COMMON_CLK_MESON_REGMAP
> @@ -110,6 +110,7 @@ config COMMON_CLK_G12A
>  	select COMMON_CLK_MESON_AO_CLKC
>  	select COMMON_CLK_MESON_EE_CLKC
>  	select COMMON_CLK_MESON_CPU_DYNDIV
> +	select COMMON_CLK_MESON_VID_PLL_DIV

This looks like a fix which could be sent separately with a fix tag,
doesn't it ?

>  	select MFD_SYSCON
>  	help
>  	  Support for the clock controller on Amlogic S905D2, S905X2 and S905Y2
> diff --git a/drivers/clk/meson/axg-aoclk.c b/drivers/clk/meson/axg-aoclk.c
> index b488b40c9d0e..af6db437bcd8 100644
> --- a/drivers/clk/meson/axg-aoclk.c
> +++ b/drivers/clk/meson/axg-aoclk.c
> @@ -12,6 +12,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/reset-controller.h>
>  #include <linux/mfd/syscon.h>
> +#include <linux/module.h>
>  #include "meson-aoclk.h"
>  #include "axg-aoclk.h"
>  
> @@ -326,6 +327,7 @@ static const struct of_device_id axg_aoclkc_match_table[] = {
>  	},
>  	{ }
>  };
> +MODULE_DEVICE_TABLE(of, axg_aoclkc_match_table);
>  
>  static struct platform_driver axg_aoclkc_driver = {
>  	.probe		= meson_aoclkc_probe,
> @@ -335,4 +337,5 @@ static struct platform_driver axg_aoclkc_driver = {
>  	},
>  };
>  
> -builtin_platform_driver(axg_aoclkc_driver);
> +module_platform_driver(axg_aoclkc_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
> index 13fc0006f63d..7ca7ea7345e5 100644
> --- a/drivers/clk/meson/axg.c
> +++ b/drivers/clk/meson/axg.c
> @@ -13,6 +13,7 @@
>  #include <linux/init.h>
>  #include <linux/of_device.h>
>  #include <linux/platform_device.h>
> +#include <linux/module.h>
>  
>  #include "clk-regmap.h"
>  #include "clk-pll.h"
> @@ -1354,6 +1355,7 @@ static const struct of_device_id clkc_match_table[] = {
>  	{ .compatible = "amlogic,axg-clkc", .data = &axg_clkc_data },
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, clkc_match_table);
>  
>  static struct platform_driver axg_driver = {
>  	.probe		= meson_eeclkc_probe,
> @@ -1363,4 +1365,5 @@ static struct platform_driver axg_driver = {
>  	},
>  };
>  
> -builtin_platform_driver(axg_driver);
> +module_platform_driver(axg_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/g12a-aoclk.c b/drivers/clk/meson/g12a-aoclk.c
> index 62499563e4f5..b52990e574d2 100644
> --- a/drivers/clk/meson/g12a-aoclk.c
> +++ b/drivers/clk/meson/g12a-aoclk.c
> @@ -12,6 +12,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/reset-controller.h>
>  #include <linux/mfd/syscon.h>
> +#include <linux/module.h>
>  #include "meson-aoclk.h"
>  #include "g12a-aoclk.h"
>  
> @@ -461,6 +462,7 @@ static const struct of_device_id g12a_aoclkc_match_table[] = {
>  	},
>  	{ }
>  };
> +MODULE_DEVICE_TABLE(of, g12a_aoclkc_match_table);
>  
>  static struct platform_driver g12a_aoclkc_driver = {
>  	.probe		= meson_aoclkc_probe,
> @@ -470,4 +472,5 @@ static struct platform_driver g12a_aoclkc_driver = {
>  	},
>  };
>  
> -builtin_platform_driver(g12a_aoclkc_driver);
> +module_platform_driver(g12a_aoclkc_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
> index b814d44917a5..66094bfec2cc 100644
> --- a/drivers/clk/meson/g12a.c
> +++ b/drivers/clk/meson/g12a.c
> @@ -15,6 +15,7 @@
>  #include <linux/of_device.h>
>  #include <linux/platform_device.h>
>  #include <linux/clk.h>
> +#include <linux/module.h>
>  
>  #include "clk-mpll.h"
>  #include "clk-pll.h"
> @@ -5370,6 +5371,7 @@ static const struct of_device_id clkc_match_table[] = {
>  	},
>  	{}
>  };
> +MODULE_DEVICE_TABLE(of, clkc_match_table);
>  
>  static struct platform_driver g12a_driver = {
>  	.probe		= meson_g12a_probe,
> @@ -5379,4 +5381,5 @@ static struct platform_driver g12a_driver = {
>  	},
>  };
>  
> -builtin_platform_driver(g12a_driver);
> +module_platform_driver(g12a_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c
> index e940861a396b..fce95cf89836 100644
> --- a/drivers/clk/meson/gxbb-aoclk.c
> +++ b/drivers/clk/meson/gxbb-aoclk.c
> @@ -5,6 +5,7 @@
>   */
>  #include <linux/platform_device.h>
>  #include <linux/mfd/syscon.h>
> +#include <linux/module.h>
>  #include "meson-aoclk.h"
>  #include "gxbb-aoclk.h"
>  
> @@ -287,6 +288,7 @@ static const struct of_device_id gxbb_aoclkc_match_table[] = {
>  	},
>  	{ }
>  };
> +MODULE_DEVICE_TABLE(of, gxbb_aoclkc_match_table);
>  
>  static struct platform_driver gxbb_aoclkc_driver = {
>  	.probe		= meson_aoclkc_probe,
> @@ -295,4 +297,5 @@ static struct platform_driver gxbb_aoclkc_driver = {
>  		.of_match_table = gxbb_aoclkc_match_table,
>  	},
>  };
> -builtin_platform_driver(gxbb_aoclkc_driver);
> +module_platform_driver(gxbb_aoclkc_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
> index 0a68af6eec3d..d6eed760327d 100644
> --- a/drivers/clk/meson/gxbb.c
> +++ b/drivers/clk/meson/gxbb.c
> @@ -8,6 +8,7 @@
>  #include <linux/init.h>
>  #include <linux/of_device.h>
>  #include <linux/platform_device.h>
> +#include <linux/module.h>
>  
>  #include "gxbb.h"
>  #include "clk-regmap.h"
> @@ -3519,6 +3520,7 @@ static const struct of_device_id clkc_match_table[] = {
>  	{ .compatible = "amlogic,gxl-clkc", .data = &gxl_clkc_data },
>  	{},
>  };
> +MODULE_DEVICE_TABLE(of, clkc_match_table);
>  
>  static struct platform_driver gxbb_driver = {
>  	.probe		= meson_eeclkc_probe,
> @@ -3528,4 +3530,5 @@ static struct platform_driver gxbb_driver = {
>  	},
>  };
>  
> -builtin_platform_driver(gxbb_driver);
> +module_platform_driver(gxbb_driver);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/meson-aoclk.c b/drivers/clk/meson/meson-aoclk.c
> index bf8bea675d24..f0858fe789bc 100644
> --- a/drivers/clk/meson/meson-aoclk.c
> +++ b/drivers/clk/meson/meson-aoclk.c
> @@ -14,6 +14,8 @@
>  #include <linux/reset-controller.h>
>  #include <linux/mfd/syscon.h>
>  #include <linux/of_device.h>
> +#include <linux/module.h>
> +
>  #include <linux/slab.h>
>  #include "meson-aoclk.h"
>  
> @@ -84,3 +86,5 @@ int meson_aoclkc_probe(struct platform_device *pdev)
>  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
>  		(void *) data->hw_data);
>  }
> +EXPORT_SYMBOL_GPL(meson_aoclkc_probe);
> +MODULE_LICENSE("GPL v2");
> diff --git a/drivers/clk/meson/meson-eeclk.c b/drivers/clk/meson/meson-eeclk.c
> index a7cb1e7aedc4..8d5a5dab955a 100644
> --- a/drivers/clk/meson/meson-eeclk.c
> +++ b/drivers/clk/meson/meson-eeclk.c
> @@ -9,6 +9,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/mfd/syscon.h>
>  #include <linux/regmap.h>
> +#include <linux/module.h>
>  
>  #include "clk-regmap.h"
>  #include "meson-eeclk.h"
> @@ -54,3 +55,5 @@ int meson_eeclkc_probe(struct platform_device *pdev)
>  	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
>  					   data->hw_onecell_data);
>  }
> +EXPORT_SYMBOL_GPL(meson_eeclkc_probe);
> +MODULE_LICENSE("GPL v2");
Stephen Boyd Nov. 14, 2020, 9:03 p.m. UTC | #2
Quoting Kevin Hilman (2020-11-09 15:36:22)
> Make it possible to build all clk drivers as modules, but default
> remains built-in.
> 
> No functional changes.
> 
> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
> ---

Acked-by: Stephen Boyd <sboyd@kernel.org>
Kevin Hilman Nov. 16, 2020, 6:34 p.m. UTC | #3
Jerome Brunet <jbrunet@baylibre.com> writes:

> On Tue 10 Nov 2020 at 00:36, Kevin Hilman <khilman@baylibre.com> wrote:
>
>> Make it possible to build all clk drivers as modules, but default
>> remains built-in.
>>
>> No functional changes.
>>
>> Signed-off-by: Kevin Hilman <khilman@baylibre.com>
>> ---
>> Depends on series adding new API to get clk consumer from clk_hw:
>> https://lore.kernel.org/linux-amlogic/20201021162147.563655-1-jbrunet@baylibre.com/
>
> and
>
> https://lore.kernel.org/r/20201021163847.595189-1-jbrunet@baylibre.com
>
> Once these notifier allocations are dealt with, I'm happy to take this.
>
> One minor details though ...

[...]

>>  config COMMON_CLK_G12A
>> -	bool "G12 and SM1 SoC clock controllers support"
>> +	tristate "G12 and SM1 SoC clock controllers support"
>>  	depends on ARM64
>>  	default y
>>  	select COMMON_CLK_MESON_REGMAP
>> @@ -110,6 +110,7 @@ config COMMON_CLK_G12A
>>  	select COMMON_CLK_MESON_AO_CLKC
>>  	select COMMON_CLK_MESON_EE_CLKC
>>  	select COMMON_CLK_MESON_CPU_DYNDIV
>> +	select COMMON_CLK_MESON_VID_PLL_DIV
>
> This looks like a fix which could be sent separately with a fix tag,
> doesn't it ?

Ah, yes.  This is a fix which should be sent separately.  I'll split it
out and resend.

Thanks for the review,

Kevin
diff mbox series

Patch

diff --git a/drivers/clk/meson/Kconfig b/drivers/clk/meson/Kconfig
index 034da203e8e0..fc002c155bc3 100644
--- a/drivers/clk/meson/Kconfig
+++ b/drivers/clk/meson/Kconfig
@@ -58,7 +58,7 @@  config COMMON_CLK_MESON8B
 	  want peripherals and CPU frequency scaling to work.
 
 config COMMON_CLK_GXBB
-	bool "GXBB and GXL SoC clock controllers support"
+	tristate "GXBB and GXL SoC clock controllers support"
 	depends on ARM64
 	default y
 	select COMMON_CLK_MESON_REGMAP
@@ -74,7 +74,7 @@  config COMMON_CLK_GXBB
 	  Say Y if you want peripherals and CPU frequency scaling to work.
 
 config COMMON_CLK_AXG
-	bool "AXG SoC clock controllers support"
+	tristate "AXG SoC clock controllers support"
 	depends on ARM64
 	default y
 	select COMMON_CLK_MESON_REGMAP
@@ -100,7 +100,7 @@  config COMMON_CLK_AXG_AUDIO
 	  aka axg, Say Y if you want audio subsystem to work.
 
 config COMMON_CLK_G12A
-	bool "G12 and SM1 SoC clock controllers support"
+	tristate "G12 and SM1 SoC clock controllers support"
 	depends on ARM64
 	default y
 	select COMMON_CLK_MESON_REGMAP
@@ -110,6 +110,7 @@  config COMMON_CLK_G12A
 	select COMMON_CLK_MESON_AO_CLKC
 	select COMMON_CLK_MESON_EE_CLKC
 	select COMMON_CLK_MESON_CPU_DYNDIV
+	select COMMON_CLK_MESON_VID_PLL_DIV
 	select MFD_SYSCON
 	help
 	  Support for the clock controller on Amlogic S905D2, S905X2 and S905Y2
diff --git a/drivers/clk/meson/axg-aoclk.c b/drivers/clk/meson/axg-aoclk.c
index b488b40c9d0e..af6db437bcd8 100644
--- a/drivers/clk/meson/axg-aoclk.c
+++ b/drivers/clk/meson/axg-aoclk.c
@@ -12,6 +12,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/reset-controller.h>
 #include <linux/mfd/syscon.h>
+#include <linux/module.h>
 #include "meson-aoclk.h"
 #include "axg-aoclk.h"
 
@@ -326,6 +327,7 @@  static const struct of_device_id axg_aoclkc_match_table[] = {
 	},
 	{ }
 };
+MODULE_DEVICE_TABLE(of, axg_aoclkc_match_table);
 
 static struct platform_driver axg_aoclkc_driver = {
 	.probe		= meson_aoclkc_probe,
@@ -335,4 +337,5 @@  static struct platform_driver axg_aoclkc_driver = {
 	},
 };
 
-builtin_platform_driver(axg_aoclkc_driver);
+module_platform_driver(axg_aoclkc_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/axg.c b/drivers/clk/meson/axg.c
index 13fc0006f63d..7ca7ea7345e5 100644
--- a/drivers/clk/meson/axg.c
+++ b/drivers/clk/meson/axg.c
@@ -13,6 +13,7 @@ 
 #include <linux/init.h>
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
+#include <linux/module.h>
 
 #include "clk-regmap.h"
 #include "clk-pll.h"
@@ -1354,6 +1355,7 @@  static const struct of_device_id clkc_match_table[] = {
 	{ .compatible = "amlogic,axg-clkc", .data = &axg_clkc_data },
 	{}
 };
+MODULE_DEVICE_TABLE(of, clkc_match_table);
 
 static struct platform_driver axg_driver = {
 	.probe		= meson_eeclkc_probe,
@@ -1363,4 +1365,5 @@  static struct platform_driver axg_driver = {
 	},
 };
 
-builtin_platform_driver(axg_driver);
+module_platform_driver(axg_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/g12a-aoclk.c b/drivers/clk/meson/g12a-aoclk.c
index 62499563e4f5..b52990e574d2 100644
--- a/drivers/clk/meson/g12a-aoclk.c
+++ b/drivers/clk/meson/g12a-aoclk.c
@@ -12,6 +12,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/reset-controller.h>
 #include <linux/mfd/syscon.h>
+#include <linux/module.h>
 #include "meson-aoclk.h"
 #include "g12a-aoclk.h"
 
@@ -461,6 +462,7 @@  static const struct of_device_id g12a_aoclkc_match_table[] = {
 	},
 	{ }
 };
+MODULE_DEVICE_TABLE(of, g12a_aoclkc_match_table);
 
 static struct platform_driver g12a_aoclkc_driver = {
 	.probe		= meson_aoclkc_probe,
@@ -470,4 +472,5 @@  static struct platform_driver g12a_aoclkc_driver = {
 	},
 };
 
-builtin_platform_driver(g12a_aoclkc_driver);
+module_platform_driver(g12a_aoclkc_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c
index b814d44917a5..66094bfec2cc 100644
--- a/drivers/clk/meson/g12a.c
+++ b/drivers/clk/meson/g12a.c
@@ -15,6 +15,7 @@ 
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
 #include <linux/clk.h>
+#include <linux/module.h>
 
 #include "clk-mpll.h"
 #include "clk-pll.h"
@@ -5370,6 +5371,7 @@  static const struct of_device_id clkc_match_table[] = {
 	},
 	{}
 };
+MODULE_DEVICE_TABLE(of, clkc_match_table);
 
 static struct platform_driver g12a_driver = {
 	.probe		= meson_g12a_probe,
@@ -5379,4 +5381,5 @@  static struct platform_driver g12a_driver = {
 	},
 };
 
-builtin_platform_driver(g12a_driver);
+module_platform_driver(g12a_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/gxbb-aoclk.c b/drivers/clk/meson/gxbb-aoclk.c
index e940861a396b..fce95cf89836 100644
--- a/drivers/clk/meson/gxbb-aoclk.c
+++ b/drivers/clk/meson/gxbb-aoclk.c
@@ -5,6 +5,7 @@ 
  */
 #include <linux/platform_device.h>
 #include <linux/mfd/syscon.h>
+#include <linux/module.h>
 #include "meson-aoclk.h"
 #include "gxbb-aoclk.h"
 
@@ -287,6 +288,7 @@  static const struct of_device_id gxbb_aoclkc_match_table[] = {
 	},
 	{ }
 };
+MODULE_DEVICE_TABLE(of, gxbb_aoclkc_match_table);
 
 static struct platform_driver gxbb_aoclkc_driver = {
 	.probe		= meson_aoclkc_probe,
@@ -295,4 +297,5 @@  static struct platform_driver gxbb_aoclkc_driver = {
 		.of_match_table = gxbb_aoclkc_match_table,
 	},
 };
-builtin_platform_driver(gxbb_aoclkc_driver);
+module_platform_driver(gxbb_aoclkc_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/gxbb.c b/drivers/clk/meson/gxbb.c
index 0a68af6eec3d..d6eed760327d 100644
--- a/drivers/clk/meson/gxbb.c
+++ b/drivers/clk/meson/gxbb.c
@@ -8,6 +8,7 @@ 
 #include <linux/init.h>
 #include <linux/of_device.h>
 #include <linux/platform_device.h>
+#include <linux/module.h>
 
 #include "gxbb.h"
 #include "clk-regmap.h"
@@ -3519,6 +3520,7 @@  static const struct of_device_id clkc_match_table[] = {
 	{ .compatible = "amlogic,gxl-clkc", .data = &gxl_clkc_data },
 	{},
 };
+MODULE_DEVICE_TABLE(of, clkc_match_table);
 
 static struct platform_driver gxbb_driver = {
 	.probe		= meson_eeclkc_probe,
@@ -3528,4 +3530,5 @@  static struct platform_driver gxbb_driver = {
 	},
 };
 
-builtin_platform_driver(gxbb_driver);
+module_platform_driver(gxbb_driver);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/meson-aoclk.c b/drivers/clk/meson/meson-aoclk.c
index bf8bea675d24..f0858fe789bc 100644
--- a/drivers/clk/meson/meson-aoclk.c
+++ b/drivers/clk/meson/meson-aoclk.c
@@ -14,6 +14,8 @@ 
 #include <linux/reset-controller.h>
 #include <linux/mfd/syscon.h>
 #include <linux/of_device.h>
+#include <linux/module.h>
+
 #include <linux/slab.h>
 #include "meson-aoclk.h"
 
@@ -84,3 +86,5 @@  int meson_aoclkc_probe(struct platform_device *pdev)
 	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
 		(void *) data->hw_data);
 }
+EXPORT_SYMBOL_GPL(meson_aoclkc_probe);
+MODULE_LICENSE("GPL v2");
diff --git a/drivers/clk/meson/meson-eeclk.c b/drivers/clk/meson/meson-eeclk.c
index a7cb1e7aedc4..8d5a5dab955a 100644
--- a/drivers/clk/meson/meson-eeclk.c
+++ b/drivers/clk/meson/meson-eeclk.c
@@ -9,6 +9,7 @@ 
 #include <linux/platform_device.h>
 #include <linux/mfd/syscon.h>
 #include <linux/regmap.h>
+#include <linux/module.h>
 
 #include "clk-regmap.h"
 #include "meson-eeclk.h"
@@ -54,3 +55,5 @@  int meson_eeclkc_probe(struct platform_device *pdev)
 	return devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get,
 					   data->hw_onecell_data);
 }
+EXPORT_SYMBOL_GPL(meson_eeclkc_probe);
+MODULE_LICENSE("GPL v2");