thermal: imx: add NVMEM dependency

Message ID 20170918204825.159177-1-arnd@arndb.de
State Accepted
Commit 531fcdeb71f0be1d4c77838b1a4694c317b1eb98
Headers show
Series
  • thermal: imx: add NVMEM dependency
Related show

Commit Message

Arnd Bergmann Sept. 18, 2017, 8:48 p.m.
The driver now fails to link into vmlinux when CONFIG_NVMEM is a loadable
module:

drivers/thermal/imx_thermal.o: In function `imx_thermal_probe':
imx_thermal.c:(.text+0x360): undefined reference to `nvmem_cell_read_u32'
imx_thermal.c:(.text+0x360): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `nvmem_cell_read_u32'
imx_thermal.c:(.text+0x388): undefined reference to `nvmem_cell_read_u32'
imx_thermal.c:(.text+0x388): relocation truncated to fit: R_AARCH64_CALL26 against undefined symbol `nvmem_cell_read_u32'

This adds a Kconfig dependency to force it to be a module as well
when its dependency is loadable.

Fixes: 7fe5ba04fcdc ("thermal: imx: Add support for reading OCOTP through nvmem")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 drivers/thermal/Kconfig | 1 +
 1 file changed, 1 insertion(+)

-- 
2.9.0

Comments

Leonard Crestez Sept. 19, 2017, 10:53 a.m. | #1
On Mon, 2017-09-18 at 22:48 +0200, Arnd Bergmann wrote:
> The driver now fails to link into vmlinux when CONFIG_NVMEM is a loadable

> module:

> 

> drivers/thermal/imx_thermal.o: In function `imx_thermal_probe':

> imx_thermal.c:(.text+0x360): undefined reference to

> `nvmem_cell_read_u32'

> imx_thermal.c:(.text+0x360): relocation truncated to fit:

> R_AARCH64_CALL26 against undefined symbol `nvmem_cell_read_u32'

> imx_thermal.c:(.text+0x388): undefined reference to

> `nvmem_cell_read_u32'

> imx_thermal.c:(.text+0x388): relocation truncated to fit:

> R_AARCH64_CALL26 against undefined symbol `nvmem_cell_read_u32'

> 

> This adds a Kconfig dependency to force it to be a module as well

> when its dependency is loadable.


This must be a very strange config with NVMEM=m and IMX_THERMAL=y on
arm64. Still, it makes sense that it should work at least at the
Kconfig level.

> Fixes: 7fe5ba04fcdc ("thermal: imx: Add support for reading OCOTP through nvmem")

> Signed-off-by: Arnd Bergmann <arnd@arndb.de>


Reviewed-by: Leonard Crestez <leonard.crestez@nxp.com>


> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig

> index 07002df4f83a..cb14f1ec5953 100644

> --- a/drivers/thermal/Kconfig

> +++ b/drivers/thermal/Kconfig

> @@ -206,6 +206,7 @@ config HISI_THERMAL

>  config IMX_THERMAL

>  	tristate "Temperature sensor driver for Freescale i.MX SoCs"

>  	depends on (ARCH_MXC && CPU_THERMAL) || COMPILE_TEST

> +	depends on NVMEM || !NVMEM


The || !NVMEM part is so that it also works when NVMEM=n, right?
Arnd Bergmann Sept. 19, 2017, 12:22 p.m. | #2
On Tue, Sep 19, 2017 at 12:53 PM, Leonard Crestez
<leonard.crestez@nxp.com> wrote:
> On Mon, 2017-09-18 at 22:48 +0200, Arnd Bergmann wrote:

>> diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig

>> index 07002df4f83a..cb14f1ec5953 100644

>> --- a/drivers/thermal/Kconfig

>> +++ b/drivers/thermal/Kconfig

>> @@ -206,6 +206,7 @@ config HISI_THERMAL

>>  config IMX_THERMAL

>>       tristate "Temperature sensor driver for Freescale i.MX SoCs"

>>       depends on (ARCH_MXC && CPU_THERMAL) || COMPILE_TEST

>> +     depends on NVMEM || !NVMEM

>

> The || !NVMEM part is so that it also works when NVMEM=n, right?


Correct, this is a very strange Kconfig expression when you see it the
first time, but we do the same thing in a lot of places that can either
use another subsystem when it is enabled (but have a link-time
dependency), or can work fine without it.

      Arnd

Patch

diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 07002df4f83a..cb14f1ec5953 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -206,6 +206,7 @@  config HISI_THERMAL
 config IMX_THERMAL
 	tristate "Temperature sensor driver for Freescale i.MX SoCs"
 	depends on (ARCH_MXC && CPU_THERMAL) || COMPILE_TEST
+	depends on NVMEM || !NVMEM
 	depends on MFD_SYSCON
 	depends on OF
 	help