* [PATCH v2 0/2] memory: omap-gpmc: Allow module build @ 2022-03-28 11:13 Roger Quadros 2022-03-28 11:13 ` [PATCH v2 1/2] memory: omap-gpmc: Make OMAP_GPMC config visible and selectable Roger Quadros 2022-03-28 11:13 ` [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module Roger Quadros 0 siblings, 2 replies; 7+ messages in thread From: Roger Quadros @ 2022-03-28 11:13 UTC (permalink / raw) To: krzk Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel, Roger Quadros Hi, Allow OMAP_GPMC config to be visible in menuconfig and buildable as a module. Changelog: v2: - Allow building as a module cheers, -roger Roger Quadros (2): memory: omap-gpmc: Make OMAP_GPMC config visible and selectable memory: omap-gpmc: Allow building as a module drivers/memory/Kconfig | 4 ++-- drivers/memory/omap-gpmc.c | 44 +++++++++++++++++++++----------------- 2 files changed, 26 insertions(+), 22 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/2] memory: omap-gpmc: Make OMAP_GPMC config visible and selectable 2022-03-28 11:13 [PATCH v2 0/2] memory: omap-gpmc: Allow module build Roger Quadros @ 2022-03-28 11:13 ` Roger Quadros 2022-03-28 11:13 ` [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module Roger Quadros 1 sibling, 0 replies; 7+ messages in thread From: Roger Quadros @ 2022-03-28 11:13 UTC (permalink / raw) To: krzk Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel, Roger Quadros So far for armv7 TI platforms, GPMC was being selected by arch/arm/mach-* architecture Kconfig files. For K3 platforms, GPMC is no longer required for basic boot and cannot be always enabled by default by mach- Kconfig. We need a way for user (or board defconfig) to enable it if required so ake OMAP_GPMC Kconfig option always visible. Signed-off-by: Roger Quadros <rogerq@kernel.org> --- drivers/memory/Kconfig | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig index 30bff6cb1b8d..da2af9c38fe3 100644 --- a/drivers/memory/Kconfig +++ b/drivers/memory/Kconfig @@ -103,8 +103,8 @@ config TI_EMIF temperature changes config OMAP_GPMC - bool "Texas Instruments OMAP SoC GPMC driver" if COMPILE_TEST - depends on OF_ADDRESS + bool "Texas Instruments OMAP SoC GPMC driver" + depends on OF_ADDRESS || COMPILE_TEST select GPIOLIB help This driver is for the General Purpose Memory Controller (GPMC) -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module 2022-03-28 11:13 [PATCH v2 0/2] memory: omap-gpmc: Allow module build Roger Quadros 2022-03-28 11:13 ` [PATCH v2 1/2] memory: omap-gpmc: Make OMAP_GPMC config visible and selectable Roger Quadros @ 2022-03-28 11:13 ` Roger Quadros 2022-03-28 13:11 ` Krzysztof Kozlowski 1 sibling, 1 reply; 7+ messages in thread From: Roger Quadros @ 2022-03-28 11:13 UTC (permalink / raw) To: krzk Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel, Roger Quadros 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(-) 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"); -- 2.17.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module 2022-03-28 11:13 ` [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module Roger Quadros @ 2022-03-28 13:11 ` Krzysztof Kozlowski 2022-03-29 7:37 ` Roger Quadros 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2022-03-28 13:11 UTC (permalink / raw) To: Roger Quadros Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module 2022-03-28 13:11 ` Krzysztof Kozlowski @ 2022-03-29 7:37 ` Roger Quadros 2022-03-29 8:02 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Roger Quadros @ 2022-03-29 7:37 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module 2022-03-29 7:37 ` Roger Quadros @ 2022-03-29 8:02 ` Krzysztof Kozlowski 2022-03-29 8:35 ` Roger Quadros 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2022-03-29 8:02 UTC (permalink / raw) To: Roger Quadros Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module 2022-03-29 8:02 ` Krzysztof Kozlowski @ 2022-03-29 8:35 ` Roger Quadros 0 siblings, 0 replies; 7+ messages in thread From: Roger Quadros @ 2022-03-29 8:35 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: miquel.raynal, tony, vigneshr, kishon, nm, linux-omap, linux-kernel 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 ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2022-03-29 8:35 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-03-28 11:13 [PATCH v2 0/2] memory: omap-gpmc: Allow module build Roger Quadros 2022-03-28 11:13 ` [PATCH v2 1/2] memory: omap-gpmc: Make OMAP_GPMC config visible and selectable Roger Quadros 2022-03-28 11:13 ` [PATCH v2 2/2] memory: omap-gpmc: Allow building as a module Roger Quadros 2022-03-28 13:11 ` Krzysztof Kozlowski 2022-03-29 7:37 ` Roger Quadros 2022-03-29 8:02 ` Krzysztof Kozlowski 2022-03-29 8:35 ` Roger Quadros
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).