Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1481369 > unrolled thread
| Started by | Paul Gortmaker <paul.gortmaker@windriver.com> |
|---|---|
| First post | 2016-09-12 16:50 +0200 |
| Last post | 2016-09-12 16:50 +0200 |
| Articles | 5 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH v2 0/6] mfd: trivial demodularization of non-modular drivers. Paul Gortmaker <paul.gortmaker@windriver.com> - 2016-09-12 16:50 +0200
[PATCH 5/6] mfd: sun6i-prcm: Make it explicitly non-modular Paul Gortmaker <paul.gortmaker@windriver.com> - 2016-09-12 16:50 +0200
Re: [PATCH 5/6] mfd: sun6i-prcm: Make it explicitly non-modular Boris Brezillon <boris.brezillon@free-electrons.com> - 2016-09-12 19:50 +0200
[PATCH 4/6] mfd: smsc-ece1099: Make it explicitly non-modular Paul Gortmaker <paul.gortmaker@windriver.com> - 2016-09-12 16:50 +0200
[PATCH 1/6] mfd: altera-a10sr: make it explicitly non-modular Paul Gortmaker <paul.gortmaker@windriver.com> - 2016-09-12 16:50 +0200
| From | Paul Gortmaker <paul.gortmaker@windriver.com> |
|---|---|
| Date | 2016-09-12 16:50 +0200 |
| Subject | [PATCH v2 0/6] mfd: trivial demodularization of non-modular drivers. |
| Message-ID | <sgAIy-4zI-3@gated-at.bofh.it> |
I grouped this little series of mfd commits together because of the
common theme of their relatively trivial use of modular infrastructure
in these non-modular drivers.
What that means is there are no orphaned __exit functions to remove;
no unused ".remove" functions linked into the driver struct to be
deleted -- so in the end we have binary equivalence between the
pre-patched code and the post-patched code. Easy to review and low risk.
More specifically - the only thing we are doing here is mapping the
initcall that binds in the driver from the module variant to the
built-in variant ; something that CPP would do for us anyway -- and
then throwing away any MODULE_ tags which are no-ops in non-modular
builds (while preserving any author/desc. info they had in comments).
And in doing that, we can toss the include of module.h in favour of
init.h (asssuming it wasn't included already).
One exception is patch #2; it converts a driver from bool to tristate,
as was asked per the v1 review[1]. This has been build tested, but
I don't have the specific hardware for run time testing.
For anyone new to the underlying goal of this cleanup, we are trying to
make driver code consistent with the Makefiles/Kconfigs that control them.
This means not using modular functions/macros for drivers that can never
be built as a module. Some of the other downfalls this leads to are:
(1) it is easy to accidentally write unused module_exit and remove code
(2) it can be misleading when reading the source, thinking it can be
modular when the Makefile and/or Kconfig prohibit it
(3) it requires the include of the module.h header file which in turn
includes nearly everything else, thus adding to CPP overhead.
(4) it gets copied/replicated into other drivers and spreads like weeds.
Build tested on linux-next for arm, arm64 and x86-64 to ensure no typos
or similar issues crept in.
[1] https://lkml.kernel.org/r/20160705012544.14143-1-paul.gortmaker@windriver.com
Paul.
---
[v1 --> v2: make one driver tristate, add some Ackd-by tags.]
Cc: Boris BREZILLON <boris.brezillon@free-electrons.com>
Cc: Florian Lobmaier <florian.lobmaier@ams.com>
Cc: Laxman Dewangan <ldewangan@nvidia.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Sourav Poddar <sourav.poddar@ti.com>
Cc: Thor Thayer <tthayer@opensource.altera.com>
Cc: Tony Lindgren <tony@atomide.com>
Cc: linux-omap@vger.kernel.org
Paul Gortmaker (6):
mfd: altera-a10sr: make it explicitly non-modular
mfd: as3722: convert MFD_AS3722 from bool to tristate
mfd: intel_msic: Make it explicitly non-modular
mfd: smsc-ece1099: Make it explicitly non-modular
mfd: sun6i-prcm: Make it explicitly non-modular
mfd: twl-core: Make it explicitly non-modular
drivers/mfd/Kconfig | 2 +-
drivers/mfd/altera-a10sr.c | 14 ++++++--------
drivers/mfd/intel_msic.c | 9 ++-------
drivers/mfd/smsc-ece1099.c | 11 ++---------
drivers/mfd/sun6i-prcm.c | 8 ++------
drivers/mfd/twl-core.c | 9 +--------
6 files changed, 14 insertions(+), 39 deletions(-)
--
2.8.4
[toc] | [next] | [standalone]
| From | Paul Gortmaker <paul.gortmaker@windriver.com> |
|---|---|
| Date | 2016-09-12 16:50 +0200 |
| Subject | [PATCH 5/6] mfd: sun6i-prcm: Make it explicitly non-modular |
| Message-ID | <sgAIz-4zI-45@gated-at.bofh.it> |
| In reply to | #1481369 |
The Kconfig currently controlling compilation of this code is:
drivers/mfd/Kconfig:config MFD_SUN6I_PRCM
drivers/mfd/Kconfig: bool "Allwinner A31 PRCM controller"
...meaning that it currently is not being built as a module by anyone.
Lets remove the couple traces of modularity so that when reading the
driver there is no doubt it is builtin-only.
Since module_platform_driver() uses the same init level priority as
builtin_platform_driver() the init ordering remains unchanged with
this commit.
We also delete the MODULE_LICENSE tag etc. since all that information
is already contained at the top of the file in the comments.
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Cc: Boris BREZILLON <boris.brezillon@free-electrons.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/mfd/sun6i-prcm.c | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/mfd/sun6i-prcm.c b/drivers/mfd/sun6i-prcm.c
index 191173166d65..011fcc555945 100644
--- a/drivers/mfd/sun6i-prcm.c
+++ b/drivers/mfd/sun6i-prcm.c
@@ -9,7 +9,7 @@
*/
#include <linux/mfd/core.h>
-#include <linux/module.h>
+#include <linux/init.h>
#include <linux/of.h>
struct prcm_data {
@@ -170,8 +170,4 @@ static struct platform_driver sun6i_prcm_driver = {
},
.probe = sun6i_prcm_probe,
};
-module_platform_driver(sun6i_prcm_driver);
-
-MODULE_AUTHOR("Boris BREZILLON <boris.brezillon@free-electrons.com>");
-MODULE_DESCRIPTION("Allwinner sun6i PRCM driver");
-MODULE_LICENSE("GPL v2");
+builtin_platform_driver(sun6i_prcm_driver);
--
2.8.4
[toc] | [prev] | [next] | [standalone]
| From | Boris Brezillon <boris.brezillon@free-electrons.com> |
|---|---|
| Date | 2016-09-12 19:50 +0200 |
| Subject | Re: [PATCH 5/6] mfd: sun6i-prcm: Make it explicitly non-modular |
| Message-ID | <sgDwL-6qC-53@gated-at.bofh.it> |
| In reply to | #1481371 |
On Mon, 12 Sep 2016 10:40:53 -0400
Paul Gortmaker <paul.gortmaker@windriver.com> wrote:
> The Kconfig currently controlling compilation of this code is:
>
> drivers/mfd/Kconfig:config MFD_SUN6I_PRCM
> drivers/mfd/Kconfig: bool "Allwinner A31 PRCM controller"
>
> ...meaning that it currently is not being built as a module by anyone.
>
> Lets remove the couple traces of modularity so that when reading the
> driver there is no doubt it is builtin-only.
>
> Since module_platform_driver() uses the same init level priority as
> builtin_platform_driver() the init ordering remains unchanged with
> this commit.
>
> We also delete the MODULE_LICENSE tag etc. since all that information
> is already contained at the top of the file in the comments.
>
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Maxime Ripard <maxime.ripard@free-electrons.com>
> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
> Cc: Boris BREZILLON <boris.brezillon@free-electrons.com>
Acked-by: Boris Brezillon <boris.brezillon@free-electrons.com>
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> ---
> drivers/mfd/sun6i-prcm.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/mfd/sun6i-prcm.c b/drivers/mfd/sun6i-prcm.c
> index 191173166d65..011fcc555945 100644
> --- a/drivers/mfd/sun6i-prcm.c
> +++ b/drivers/mfd/sun6i-prcm.c
> @@ -9,7 +9,7 @@
> */
>
> #include <linux/mfd/core.h>
> -#include <linux/module.h>
> +#include <linux/init.h>
> #include <linux/of.h>
>
> struct prcm_data {
> @@ -170,8 +170,4 @@ static struct platform_driver sun6i_prcm_driver = {
> },
> .probe = sun6i_prcm_probe,
> };
> -module_platform_driver(sun6i_prcm_driver);
> -
> -MODULE_AUTHOR("Boris BREZILLON <boris.brezillon@free-electrons.com>");
> -MODULE_DESCRIPTION("Allwinner sun6i PRCM driver");
> -MODULE_LICENSE("GPL v2");
> +builtin_platform_driver(sun6i_prcm_driver);
[toc] | [prev] | [next] | [standalone]
| From | Paul Gortmaker <paul.gortmaker@windriver.com> |
|---|---|
| Date | 2016-09-12 16:50 +0200 |
| Subject | [PATCH 4/6] mfd: smsc-ece1099: Make it explicitly non-modular |
| Message-ID | <sgAIy-4zI-33@gated-at.bofh.it> |
| In reply to | #1481369 |
The Kconfig currently controlling compilation of this code is:
drivers/mfd/Kconfig:config MFD_SMSC
drivers/mfd/Kconfig: bool "SMSC ECE1099 series chips"
...meaning that it currently is not being built as a module by anyone.
Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.
Since module_init was not in use by this code, the init ordering
remains unchanged with this commit.
We replace module.h with init.h and delete an unused moduleparam.h
include.
Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
We also delete the MODULE_LICENSE tag etc. since all that information
is already contained at the top of the file in the comments.
Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Sourav Poddar <sourav.poddar@ti.com>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/mfd/smsc-ece1099.c | 11 ++---------
1 file changed, 2 insertions(+), 9 deletions(-)
diff --git a/drivers/mfd/smsc-ece1099.c b/drivers/mfd/smsc-ece1099.c
index cd18c09827ef..1f40baf1234e 100644
--- a/drivers/mfd/smsc-ece1099.c
+++ b/drivers/mfd/smsc-ece1099.c
@@ -11,8 +11,7 @@
*
*/
-#include <linux/module.h>
-#include <linux/moduleparam.h>
+#include <linux/init.h>
#include <linux/slab.h>
#include <linux/i2c.h>
#include <linux/gpio.h>
@@ -81,7 +80,6 @@ static const struct i2c_device_id smsc_i2c_id[] = {
{ "smscece1099", 0},
{},
};
-MODULE_DEVICE_TABLE(i2c, smsc_i2c_id);
static struct i2c_driver smsc_i2c_driver = {
.driver = {
@@ -90,9 +88,4 @@ static struct i2c_driver smsc_i2c_driver = {
.probe = smsc_i2c_probe,
.id_table = smsc_i2c_id,
};
-
-module_i2c_driver(smsc_i2c_driver);
-
-MODULE_AUTHOR("Sourav Poddar <sourav.poddar@ti.com>");
-MODULE_DESCRIPTION("SMSC chip multi-function driver");
-MODULE_LICENSE("GPL v2");
+builtin_i2c_driver(smsc_i2c_driver);
--
2.8.4
[toc] | [prev] | [next] | [standalone]
| From | Paul Gortmaker <paul.gortmaker@windriver.com> |
|---|---|
| Date | 2016-09-12 16:50 +0200 |
| Subject | [PATCH 1/6] mfd: altera-a10sr: make it explicitly non-modular |
| Message-ID | <sgAIy-4zI-29@gated-at.bofh.it> |
| In reply to | #1481369 |
The Kconfig currently controlling compilation of this code is:
drivers/mfd/Kconfig:config MFD_ALTERA_A10SR
drivers/mfd/Kconfig: bool "Altera Arria10 DevKit System Resource chip"
...meaning that it currently is not being built as a module by anyone.
Lets remove the modular code that is essentially orphaned, so that
when reading the driver there is no doubt it is builtin-only.
Since builtin_driver() uses the same init level priority as
module_spi_driver() the init ordering remains unchanged with
this commit. [Note that there is no builtin_spi_driver macro,
so we open-code what it would be via builtin_driver().]
Also note that MODULE_DEVICE_TABLE is a no-op for non-modular code.
We also delete the MODULE_LICENSE tag etc. since all that information
was (or is now) contained at the top of the file in the comments.
Cc: Thor Thayer <tthayer@opensource.altera.com>
Cc: Lee Jones <lee.jones@linaro.org>
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
---
drivers/mfd/altera-a10sr.c | 14 ++++++--------
1 file changed, 6 insertions(+), 8 deletions(-)
diff --git a/drivers/mfd/altera-a10sr.c b/drivers/mfd/altera-a10sr.c
index 40ed65e5fb2a..06e1f7fc5605 100644
--- a/drivers/mfd/altera-a10sr.c
+++ b/drivers/mfd/altera-a10sr.c
@@ -1,4 +1,8 @@
/*
+ * Altera Arria10 DevKit System Resource MFD Driver
+ *
+ * Author: Thor Thayer <tthayer@opensource.altera.com>
+ *
* Copyright Intel Corporation (C) 2014-2016. All Rights Reserved
*
* This program is free software; you can redistribute it and/or modify it
@@ -20,7 +24,7 @@
#include <linux/mfd/altera-a10sr.h>
#include <linux/mfd/core.h>
-#include <linux/module.h>
+#include <linux/init.h>
#include <linux/of.h>
#include <linux/spi/spi.h>
@@ -152,7 +156,6 @@ static const struct of_device_id altr_a10sr_spi_of_match[] = {
{ .compatible = "altr,a10sr" },
{ },
};
-MODULE_DEVICE_TABLE(of, altr_a10sr_spi_of_match);
static struct spi_driver altr_a10sr_spi_driver = {
.probe = altr_a10sr_spi_probe,
@@ -161,9 +164,4 @@ static struct spi_driver altr_a10sr_spi_driver = {
.of_match_table = of_match_ptr(altr_a10sr_spi_of_match),
},
};
-
-module_spi_driver(altr_a10sr_spi_driver);
-
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Thor Thayer <tthayer@opensource.altera.com>");
-MODULE_DESCRIPTION("Altera Arria10 DevKit System Resource MFD Driver");
+builtin_driver(altr_a10sr_spi_driver, spi_register_driver)
--
2.8.4
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web