Subject: Re: [PATCH v4 2/4] soc: ti: Add module build support

From: Péter Ujfalusi <[email-masked]>
Date: Thu, 24 Nov 2022 09:54:12 +0200

On 08/11/2022 20:11, Nicolas Frayer wrote:
> Added module build support for the TI K3 SoC info driver.

Subject: "soc: ti: k3-socinfo: ..."

> 
> Signed-off-by: Nicolas Frayer <[email-masked]>
> ---
>   arch/arm64/Kconfig.platforms |  1 -
>   drivers/soc/ti/Kconfig       |  3 ++-
>   drivers/soc/ti/k3-socinfo.c  | 11 +++++++++++
>   3 files changed, 13 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig.platforms b/arch/arm64/Kconfig.platforms
> index 76580b932e44..4f2f92eb499f 100644
> --- a/arch/arm64/Kconfig.platforms
> +++ b/arch/arm64/Kconfig.platforms
> @@ -130,7 +130,6 @@ config ARCH_K3
>   	select TI_SCI_PROTOCOL
>   	select TI_SCI_INTR_IRQCHIP
>   	select TI_SCI_INTA_IRQCHIP
> -	select TI_K3_SOCINFO
>   	help
>   	  This enables support for Texas Instruments' K3 multicore SoC
>   	  architecture.
> diff --git a/drivers/soc/ti/Kconfig b/drivers/soc/ti/Kconfig
> index 7e2fb1c16af1..1a730c057cce 100644
> --- a/drivers/soc/ti/Kconfig
> +++ b/drivers/soc/ti/Kconfig
> @@ -74,7 +74,8 @@ config TI_K3_RINGACC
>   	  If unsure, say N.
>   
>   config TI_K3_SOCINFO
> -	bool
> +	tristate "TI K3 SoC info driver"
> +	default y

Why it is a good thing to have this driver as module compared to always 
built in?
It has no dependencies, just things depending on it.
It is small, just couple of lines long

I don't really see the benefit of building it as a module, not even an 
academic one...

>   	depends on ARCH_K3 || COMPILE_TEST
>   	select SOC_BUS
>   	select MFD_SYSCON
> diff --git a/drivers/soc/ti/k3-socinfo.c b/drivers/soc/ti/k3-socinfo.c
> index 19f3e74f5376..98348f998e0f 100644
> --- a/drivers/soc/ti/k3-socinfo.c
> +++ b/drivers/soc/ti/k3-socinfo.c
> @@ -13,6 +13,7 @@
>   #include <linux/slab.h>
>   #include <linux/string.h>
>   #include <linux/sys_soc.h>
> +#include <linux/module.h>
>   
>   #define CTRLMMR_WKUP_JTAGID_REG		0
>   /*
> @@ -141,6 +142,7 @@ static const struct of_device_id k3_chipinfo_of_match[] = {
>   	{ .compatible = "ti,am654-chipid", },
>   	{ /* sentinel */ },
>   };
> +MODULE_DEVICE_TABLE(of, k3_chipinfo_of_match);
>   
>   static struct platform_driver k3_chipinfo_driver = {
>   	.driver = {
> @@ -156,3 +158,12 @@ static int __init k3_chipinfo_init(void)
>   	return platform_driver_register(&k3_chipinfo_driver);
>   }
>   subsys_initcall(k3_chipinfo_init);

subsys_initcall for a module?

> +
> +static void __exit k3_chipinfo_exit(void)
> +{
> +	platform_driver_unregister(&k3_chipinfo_driver);
> +}
> +module_exit(k3_chipinfo_exit);
> +
> +MODULE_DESCRIPTION("TI K3 SoC info driver");
> +MODULE_LICENSE("GPL");

-- 
Péter