Message ID | 20220328111319.1236-3-rogerq@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | memory: omap-gpmc: Allow module build | expand |
On 28/03/2022 13:13, Roger Quadros wrote: > Allow OMAP_GPMC to be built as a module. > > Remove redundant of_match_node() call before > of_platform_default_populate() as the latter takes > care of matching with of_default_bus_match_table. Split this part to separate commit, please. It does not look related to making it a module. > > Move compatible match table to the end where it is usually expected. > > Signed-off-by: Roger Quadros <rogerq@kernel.org> > --- > drivers/memory/Kconfig | 2 +- > drivers/memory/omap-gpmc.c | 44 +++++++++++++++++++++----------------- > 2 files changed, 25 insertions(+), 21 deletions(-) > > diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig > index da2af9c38fe3..4debd4b2c8da 100644 > --- a/drivers/memory/Kconfig > +++ b/drivers/memory/Kconfig > @@ -103,7 +103,7 @@ config TI_EMIF > temperature changes > > config OMAP_GPMC > - bool "Texas Instruments OMAP SoC GPMC driver" > + tristate "Texas Instruments OMAP SoC GPMC driver" > depends on OF_ADDRESS || COMPILE_TEST > select GPIOLIB > help > diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c > index ed11887c1b7c..6fdb76cc3bc9 100644 > --- a/drivers/memory/omap-gpmc.c > +++ b/drivers/memory/omap-gpmc.c > @@ -12,6 +12,7 @@ > #include <linux/cpu_pm.h> > #include <linux/irq.h> > #include <linux/kernel.h> > +#include <linux/module.h> > #include <linux/init.h> > #include <linux/err.h> > #include <linux/clk.h> > @@ -1889,16 +1890,6 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p) > } > > #ifdef CONFIG_OF > -static const struct of_device_id gpmc_dt_ids[] = { > - { .compatible = "ti,omap2420-gpmc" }, > - { .compatible = "ti,omap2430-gpmc" }, > - { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ > - { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ > - { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ > - { .compatible = "ti,am64-gpmc" }, > - { } > -}; > - > static void gpmc_cs_set_name(int cs, const char *name) > { > struct gpmc_cs_data *gpmc = &gpmc_cs[cs]; > @@ -2257,11 +2248,9 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, > if (!of_platform_device_create(child, NULL, &pdev->dev)) > goto err_child_fail; > > - /* is child a common bus? */ > - if (of_match_node(of_default_bus_match_table, child)) > - /* create children and other common bus children */ > - if (of_platform_default_populate(child, NULL, &pdev->dev)) > - goto err_child_fail; > + /* create children and other common bus children */ > + if (of_platform_default_populate(child, NULL, &pdev->dev)) > + goto err_child_fail; > > return 0; > > @@ -2278,6 +2267,8 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, > return ret; > } > > +static const struct of_device_id gpmc_dt_ids[]; > + > static int gpmc_probe_dt(struct platform_device *pdev) > { > int ret; > @@ -2644,6 +2635,19 @@ static int gpmc_resume(struct device *dev) > > static SIMPLE_DEV_PM_OPS(gpmc_pm_ops, gpmc_suspend, gpmc_resume); > > +#ifdef CONFIG_OF > +static const struct of_device_id gpmc_dt_ids[] = { > + { .compatible = "ti,omap2420-gpmc" }, > + { .compatible = "ti,omap2430-gpmc" }, > + { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ > + { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ > + { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ > + { .compatible = "ti,am64-gpmc" }, > + { } > +}; > +MODULE_DEVICE_TABLE(of, gpmc_dt_ids); > +#endif > + > static struct platform_driver gpmc_driver = { > .probe = gpmc_probe, > .remove = gpmc_remove, > @@ -2654,8 +2658,8 @@ static struct platform_driver gpmc_driver = { > }, > }; > > -static __init int gpmc_init(void) > -{ > - return platform_driver_register(&gpmc_driver); > -} > -postcore_initcall(gpmc_init); > +module_platform_driver(gpmc_driver); > + > +MODULE_DESCRIPTION("Texas Instruments GPMC driver"); > +MODULE_ALIAS("platform:" DEVICE_NAME); Why do you need this alias? > +MODULE_LICENSE("GPL v2"); Best regards, Krzysztof
Hi Krzysztof, On 28/03/2022 16:11, Krzysztof Kozlowski wrote: > On 28/03/2022 13:13, Roger Quadros wrote: >> Allow OMAP_GPMC to be built as a module. >> >> Remove redundant of_match_node() call before >> of_platform_default_populate() as the latter takes >> care of matching with of_default_bus_match_table. > > Split this part to separate commit, please. It does not look related to > making it a module. Actually it is related. Without that change build fails as it cannot find symbol 'of_default_bus_match_table' Maybe I'll mention it in commit log. > >> >> Move compatible match table to the end where it is usually expected. >> >> Signed-off-by: Roger Quadros <rogerq@kernel.org> >> --- >> drivers/memory/Kconfig | 2 +- >> drivers/memory/omap-gpmc.c | 44 +++++++++++++++++++++----------------- >> 2 files changed, 25 insertions(+), 21 deletions(-) >> >> diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig >> index da2af9c38fe3..4debd4b2c8da 100644 >> --- a/drivers/memory/Kconfig >> +++ b/drivers/memory/Kconfig >> @@ -103,7 +103,7 @@ config TI_EMIF >> temperature changes >> >> config OMAP_GPMC >> - bool "Texas Instruments OMAP SoC GPMC driver" >> + tristate "Texas Instruments OMAP SoC GPMC driver" >> depends on OF_ADDRESS || COMPILE_TEST >> select GPIOLIB >> help >> diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c >> index ed11887c1b7c..6fdb76cc3bc9 100644 >> --- a/drivers/memory/omap-gpmc.c >> +++ b/drivers/memory/omap-gpmc.c >> @@ -12,6 +12,7 @@ >> #include <linux/cpu_pm.h> >> #include <linux/irq.h> >> #include <linux/kernel.h> >> +#include <linux/module.h> >> #include <linux/init.h> >> #include <linux/err.h> >> #include <linux/clk.h> >> @@ -1889,16 +1890,6 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p) >> } >> >> #ifdef CONFIG_OF >> -static const struct of_device_id gpmc_dt_ids[] = { >> - { .compatible = "ti,omap2420-gpmc" }, >> - { .compatible = "ti,omap2430-gpmc" }, >> - { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ >> - { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ >> - { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ >> - { .compatible = "ti,am64-gpmc" }, >> - { } >> -}; >> - >> static void gpmc_cs_set_name(int cs, const char *name) >> { >> struct gpmc_cs_data *gpmc = &gpmc_cs[cs]; >> @@ -2257,11 +2248,9 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, >> if (!of_platform_device_create(child, NULL, &pdev->dev)) >> goto err_child_fail; >> >> - /* is child a common bus? */ >> - if (of_match_node(of_default_bus_match_table, child)) >> - /* create children and other common bus children */ >> - if (of_platform_default_populate(child, NULL, &pdev->dev)) >> - goto err_child_fail; >> + /* create children and other common bus children */ >> + if (of_platform_default_populate(child, NULL, &pdev->dev)) >> + goto err_child_fail; >> >> return 0; >> >> @@ -2278,6 +2267,8 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, >> return ret; >> } >> >> +static const struct of_device_id gpmc_dt_ids[]; >> + >> static int gpmc_probe_dt(struct platform_device *pdev) >> { >> int ret; >> @@ -2644,6 +2635,19 @@ static int gpmc_resume(struct device *dev) >> >> static SIMPLE_DEV_PM_OPS(gpmc_pm_ops, gpmc_suspend, gpmc_resume); >> >> +#ifdef CONFIG_OF >> +static const struct of_device_id gpmc_dt_ids[] = { >> + { .compatible = "ti,omap2420-gpmc" }, >> + { .compatible = "ti,omap2430-gpmc" }, >> + { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ >> + { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ >> + { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ >> + { .compatible = "ti,am64-gpmc" }, >> + { } >> +}; >> +MODULE_DEVICE_TABLE(of, gpmc_dt_ids); >> +#endif >> + >> static struct platform_driver gpmc_driver = { >> .probe = gpmc_probe, >> .remove = gpmc_remove, >> @@ -2654,8 +2658,8 @@ static struct platform_driver gpmc_driver = { >> }, >> }; >> >> -static __init int gpmc_init(void) >> -{ >> - return platform_driver_register(&gpmc_driver); >> -} >> -postcore_initcall(gpmc_init); >> +module_platform_driver(gpmc_driver); >> + >> +MODULE_DESCRIPTION("Texas Instruments GPMC driver"); >> +MODULE_ALIAS("platform:" DEVICE_NAME); > > Why do you need this alias? Not required. I'll remove it. > >> +MODULE_LICENSE("GPL v2"); > > > Best regards, > Krzysztof -- cheers, -roger
On 29/03/2022 09:37, Roger Quadros wrote: > Hi Krzysztof, > > On 28/03/2022 16:11, Krzysztof Kozlowski wrote: >> On 28/03/2022 13:13, Roger Quadros wrote: >>> Allow OMAP_GPMC to be built as a module. >>> >>> Remove redundant of_match_node() call before >>> of_platform_default_populate() as the latter takes >>> care of matching with of_default_bus_match_table. >> >> Split this part to separate commit, please. It does not look related to >> making it a module. > > Actually it is related. Without that change build fails > as it cannot find symbol 'of_default_bus_match_table' Hm, because of missing EXPORT? Then it is related although to me removal of redundant code still could be split to separate commit. But I do not insist, if you mention it in commit msg. Best regards, Krzysztof
On 29/03/2022 11:02, Krzysztof Kozlowski wrote: > On 29/03/2022 09:37, Roger Quadros wrote: >> Hi Krzysztof, >> >> On 28/03/2022 16:11, Krzysztof Kozlowski wrote: >>> On 28/03/2022 13:13, Roger Quadros wrote: >>>> Allow OMAP_GPMC to be built as a module. >>>> >>>> Remove redundant of_match_node() call before >>>> of_platform_default_populate() as the latter takes >>>> care of matching with of_default_bus_match_table. >>> >>> Split this part to separate commit, please. It does not look related to >>> making it a module. >> >> Actually it is related. Without that change build fails >> as it cannot find symbol 'of_default_bus_match_table' > > Hm, because of missing EXPORT? Yes, only module build fails. Built-in is fine. > > Then it is related although to me removal of redundant code still could > be split to separate commit. But I do not insist, if you mention it in > commit msg. OK. Thanks. > > > Best regards, > Krzysztof -- cheers, -roger
diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig index da2af9c38fe3..4debd4b2c8da 100644 --- a/drivers/memory/Kconfig +++ b/drivers/memory/Kconfig @@ -103,7 +103,7 @@ config TI_EMIF temperature changes config OMAP_GPMC - bool "Texas Instruments OMAP SoC GPMC driver" + tristate "Texas Instruments OMAP SoC GPMC driver" depends on OF_ADDRESS || COMPILE_TEST select GPIOLIB help diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c index ed11887c1b7c..6fdb76cc3bc9 100644 --- a/drivers/memory/omap-gpmc.c +++ b/drivers/memory/omap-gpmc.c @@ -12,6 +12,7 @@ #include <linux/cpu_pm.h> #include <linux/irq.h> #include <linux/kernel.h> +#include <linux/module.h> #include <linux/init.h> #include <linux/err.h> #include <linux/clk.h> @@ -1889,16 +1890,6 @@ int gpmc_cs_program_settings(int cs, struct gpmc_settings *p) } #ifdef CONFIG_OF -static const struct of_device_id gpmc_dt_ids[] = { - { .compatible = "ti,omap2420-gpmc" }, - { .compatible = "ti,omap2430-gpmc" }, - { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ - { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ - { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ - { .compatible = "ti,am64-gpmc" }, - { } -}; - static void gpmc_cs_set_name(int cs, const char *name) { struct gpmc_cs_data *gpmc = &gpmc_cs[cs]; @@ -2257,11 +2248,9 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, if (!of_platform_device_create(child, NULL, &pdev->dev)) goto err_child_fail; - /* is child a common bus? */ - if (of_match_node(of_default_bus_match_table, child)) - /* create children and other common bus children */ - if (of_platform_default_populate(child, NULL, &pdev->dev)) - goto err_child_fail; + /* create children and other common bus children */ + if (of_platform_default_populate(child, NULL, &pdev->dev)) + goto err_child_fail; return 0; @@ -2278,6 +2267,8 @@ static int gpmc_probe_generic_child(struct platform_device *pdev, return ret; } +static const struct of_device_id gpmc_dt_ids[]; + static int gpmc_probe_dt(struct platform_device *pdev) { int ret; @@ -2644,6 +2635,19 @@ static int gpmc_resume(struct device *dev) static SIMPLE_DEV_PM_OPS(gpmc_pm_ops, gpmc_suspend, gpmc_resume); +#ifdef CONFIG_OF +static const struct of_device_id gpmc_dt_ids[] = { + { .compatible = "ti,omap2420-gpmc" }, + { .compatible = "ti,omap2430-gpmc" }, + { .compatible = "ti,omap3430-gpmc" }, /* omap3430 & omap3630 */ + { .compatible = "ti,omap4430-gpmc" }, /* omap4430 & omap4460 & omap543x */ + { .compatible = "ti,am3352-gpmc" }, /* am335x devices */ + { .compatible = "ti,am64-gpmc" }, + { } +}; +MODULE_DEVICE_TABLE(of, gpmc_dt_ids); +#endif + static struct platform_driver gpmc_driver = { .probe = gpmc_probe, .remove = gpmc_remove, @@ -2654,8 +2658,8 @@ static struct platform_driver gpmc_driver = { }, }; -static __init int gpmc_init(void) -{ - return platform_driver_register(&gpmc_driver); -} -postcore_initcall(gpmc_init); +module_platform_driver(gpmc_driver); + +MODULE_DESCRIPTION("Texas Instruments GPMC driver"); +MODULE_ALIAS("platform:" DEVICE_NAME); +MODULE_LICENSE("GPL v2");
Allow OMAP_GPMC to be built as a module. Remove redundant of_match_node() call before of_platform_default_populate() as the latter takes care of matching with of_default_bus_match_table. Move compatible match table to the end where it is usually expected. Signed-off-by: Roger Quadros <rogerq@kernel.org> --- drivers/memory/Kconfig | 2 +- drivers/memory/omap-gpmc.c | 44 +++++++++++++++++++++----------------- 2 files changed, 25 insertions(+), 21 deletions(-)