[3/3] thermal: allow u8500-thermal driver to be a module
diff mbox

Message ID 1453740264-1972562-4-git-send-email-arnd@arndb.de
State Accepted
Delegated to: Zhang Rui
Headers show

Commit Message

Arnd Bergmann Jan. 25, 2016, 4:44 p.m. UTC
When the thermal subsystem is a loadable module, the u8500 driver
fails to build:

drivers/thermal/built-in.o: In function `db8500_thermal_probe':
db8500_thermal.c:(.text+0x96c): undefined reference to `thermal_zone_device_register'
drivers/thermal/built-in.o: In function `db8500_thermal_work':
db8500_thermal.c:(.text+0xab4): undefined reference to `thermal_zone_device_update'

This changes the symbol to a tristate, so Kconfig can track the
dependency correctly.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
---
 drivers/mfd/db8500-prcmu.c | 3 +++
 drivers/thermal/Kconfig    | 4 ++--
 2 files changed, 5 insertions(+), 2 deletions(-)

Comments

Lee Jones Jan. 27, 2016, 7:33 a.m. UTC | #1
On Mon, 25 Jan 2016, Arnd Bergmann wrote:

> When the thermal subsystem is a loadable module, the u8500 driver
> fails to build:
> 
> drivers/thermal/built-in.o: In function `db8500_thermal_probe':
> db8500_thermal.c:(.text+0x96c): undefined reference to `thermal_zone_device_register'
> drivers/thermal/built-in.o: In function `db8500_thermal_work':
> db8500_thermal.c:(.text+0xab4): undefined reference to `thermal_zone_device_update'
> 
> This changes the symbol to a tristate, so Kconfig can track the
> dependency correctly.
> 
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> ---
>  drivers/mfd/db8500-prcmu.c | 3 +++
>  drivers/thermal/Kconfig    | 4 ++--
>  2 files changed, 5 insertions(+), 2 deletions(-)

As this touches a core Thermal file, I think it's better off going in
via that tree.  If that's a problem, I can take it with the relevant
Acks.

Acked-by: Lee Jones <lee.jones@linaro.org>

> diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
> index 2f4a1279b094..c0a86aeb1733 100644
> --- a/drivers/mfd/db8500-prcmu.c
> +++ b/drivers/mfd/db8500-prcmu.c
> @@ -2045,6 +2045,7 @@ int db8500_prcmu_config_hotmon(u8 low, u8 high)
>  
>  	return 0;
>  }
> +EXPORT_SYMBOL_GPL(db8500_prcmu_config_hotmon);
>  
>  static int config_hot_period(u16 val)
>  {
> @@ -2071,11 +2072,13 @@ int db8500_prcmu_start_temp_sense(u16 cycles32k)
>  
>  	return config_hot_period(cycles32k);
>  }
> +EXPORT_SYMBOL_GPL(db8500_prcmu_start_temp_sense);
>  
>  int db8500_prcmu_stop_temp_sense(void)
>  {
>  	return config_hot_period(0xFFFF);
>  }
> +EXPORT_SYMBOL_GPL(db8500_prcmu_stop_temp_sense);
>  
>  static int prcmu_a9wdog(u8 cmd, u8 d0, u8 d1, u8 d2, u8 d3)
>  {
> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
> index 0852fd028dc9..7c92c09be213 100644
> --- a/drivers/thermal/Kconfig
> +++ b/drivers/thermal/Kconfig
> @@ -237,8 +237,8 @@ config DOVE_THERMAL
>  	  framework.
>  
>  config DB8500_THERMAL
> -	bool "DB8500 thermal management"
> -	depends on ARCH_U8500
> +	tristate "DB8500 thermal management"
> +	depends on MFD_DB8500_PRCMU
>  	default y
>  	help
>  	  Adds DB8500 thermal management implementation according to the thermal
Linus Walleij Feb. 5, 2016, 2:44 p.m. UTC | #2
On Mon, Jan 25, 2016 at 5:44 PM, Arnd Bergmann <arnd@arndb.de> wrote:

> When the thermal subsystem is a loadable module, the u8500 driver
> fails to build:
>
> drivers/thermal/built-in.o: In function `db8500_thermal_probe':
> db8500_thermal.c:(.text+0x96c): undefined reference to `thermal_zone_device_register'
> drivers/thermal/built-in.o: In function `db8500_thermal_work':
> db8500_thermal.c:(.text+0xab4): undefined reference to `thermal_zone_device_update'
>
> This changes the symbol to a tristate, so Kconfig can track the
> dependency correctly.
>
> Signed-off-by: Arnd Bergmann <arnd@arndb.de>

Acked-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-pm" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Eduardo Valentin Feb. 9, 2016, 10:10 p.m. UTC | #3
On Wed, Jan 27, 2016 at 07:33:00AM +0000, Lee Jones wrote:
> On Mon, 25 Jan 2016, Arnd Bergmann wrote:
> 
> > When the thermal subsystem is a loadable module, the u8500 driver
> > fails to build:
> > 
> > drivers/thermal/built-in.o: In function `db8500_thermal_probe':
> > db8500_thermal.c:(.text+0x96c): undefined reference to `thermal_zone_device_register'
> > drivers/thermal/built-in.o: In function `db8500_thermal_work':
> > db8500_thermal.c:(.text+0xab4): undefined reference to `thermal_zone_device_update'
> > 
> > This changes the symbol to a tristate, so Kconfig can track the
> > dependency correctly.
> > 
> > Signed-off-by: Arnd Bergmann <arnd@arndb.de>
> > ---
> >  drivers/mfd/db8500-prcmu.c | 3 +++
> >  drivers/thermal/Kconfig    | 4 ++--
> >  2 files changed, 5 insertions(+), 2 deletions(-)
> 
> As this touches a core Thermal file, I think it's better off going in
> via that tree.  If that's a problem, I can take it with the relevant
> Acks.
> 
> Acked-by: Lee Jones <lee.jones@linaro.org>


Thanks, I am adding to linux-next to see how it goes.

Patch
diff mbox

diff --git a/drivers/mfd/db8500-prcmu.c b/drivers/mfd/db8500-prcmu.c
index 2f4a1279b094..c0a86aeb1733 100644
--- a/drivers/mfd/db8500-prcmu.c
+++ b/drivers/mfd/db8500-prcmu.c
@@ -2045,6 +2045,7 @@  int db8500_prcmu_config_hotmon(u8 low, u8 high)
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(db8500_prcmu_config_hotmon);
 
 static int config_hot_period(u16 val)
 {
@@ -2071,11 +2072,13 @@  int db8500_prcmu_start_temp_sense(u16 cycles32k)
 
 	return config_hot_period(cycles32k);
 }
+EXPORT_SYMBOL_GPL(db8500_prcmu_start_temp_sense);
 
 int db8500_prcmu_stop_temp_sense(void)
 {
 	return config_hot_period(0xFFFF);
 }
+EXPORT_SYMBOL_GPL(db8500_prcmu_stop_temp_sense);
 
 static int prcmu_a9wdog(u8 cmd, u8 d0, u8 d1, u8 d2, u8 d3)
 {
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 0852fd028dc9..7c92c09be213 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -237,8 +237,8 @@  config DOVE_THERMAL
 	  framework.
 
 config DB8500_THERMAL
-	bool "DB8500 thermal management"
-	depends on ARCH_U8500
+	tristate "DB8500 thermal management"
+	depends on MFD_DB8500_PRCMU
 	default y
 	help
 	  Adds DB8500 thermal management implementation according to the thermal