* [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).