mbox series

[v4,0/6] Add driver for NVIDIA Tegra30 SoC Thermal sensor

Message ID 20210616190417.32214-1-digetx@gmail.com
Headers show
Series Add driver for NVIDIA Tegra30 SoC Thermal sensor | expand

Message

Dmitry Osipenko June 16, 2021, 7:04 p.m. UTC
Hi,

This series adds support for the thermal sensor that is found on NVIDIA
Tegra30 SoC. Sensor monitors temperature and voltage of the SoC, it also
emits signals to the power management and clock controllers that are
performing the emergency shut down and the CPU frequency throttling
when a pre-programmed temperature levels are reached.

Changelog:

v4: - Removed DIV2 CPU frequency throttling and cooling device part as was
      suggested by Daniel Lezcano since we need to notify cpufreq about the
      updated frequency and change the thermal pressure. The thermal pressure
      change should co-exists with the cpufreq_cooling. This all needs some
      more thought, so the DIV2 mitigation will come sometime later.

    - Added ack from Thierry Reding.

    - Changed default TZ trips in the device-tree to the silicon temperature
      levels, instead of the average device levels.

v3: - No code changes. CC'ed linux-pm, which was previously missed by accident.
      Not sure how much that is important for the thermal patches, but won't
      hurt to re-send since only DT binding was reviewed so far.

v2: - Made a very minor improvement to one error message, it now prints
      number of channel at which error occurred.

    - Added r-b from Rob Herring to the binding.

Dmitry Osipenko (6):
  dt-bindings: thermal: Add binding for Tegra30 thermal sensor
  thermal: thermal_of: Stop zone device before unregistering it
  thermal/drivers/tegra: Add driver for Tegra30 thermal sensor
  ARM: tegra_defconfig: Enable CONFIG_TEGRA30_TSENSOR
  ARM: multi_v7_defconfig: Enable CONFIG_TEGRA30_TSENSOR
  ARM: tegra: Add SoC thermal sensor to Tegra30 device-trees

 .../thermal/nvidia,tegra30-tsensor.yaml       |  73 ++
 arch/arm/boot/dts/tegra30.dtsi                |  87 ++-
 arch/arm/configs/multi_v7_defconfig           |   1 +
 arch/arm/configs/tegra_defconfig              |   1 +
 drivers/thermal/tegra/Kconfig                 |   7 +
 drivers/thermal/tegra/Makefile                |   1 +
 drivers/thermal/tegra/tegra30-tsensor.c       | 673 ++++++++++++++++++
 drivers/thermal/thermal_of.c                  |   3 +
 8 files changed, 842 insertions(+), 4 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/thermal/nvidia,tegra30-tsensor.yaml
 create mode 100644 drivers/thermal/tegra/tegra30-tsensor.c

Comments

Daniel Lezcano June 21, 2021, 5:13 p.m. UTC | #1
Hi Dmitry,

I compiled the your series and got these unresolved.

arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
`tegra_calc_shared_calib':
soctherm-fuse.c:(.text+0x60): undefined reference to `tegra_fuse_readl'
arm-linux-gnueabi-ld: soctherm-fuse.c:(.text+0xf0): undefined reference
to `tegra_fuse_readl'
arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
`tegra_calc_tsensor_calib':
soctherm-fuse.c:(.text+0x144): undefined reference to `tegra_fuse_readl'
arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
function `tegra_tsensor_fuse_read_spare':
tegra30-tsensor.c:(.text+0x364): undefined reference to `tegra_fuse_readl'
arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
function `tegra_tsensor_probe':
tegra30-tsensor.c:(.text+0x874): undefined reference to `tegra_fuse_readl'
arm-linux-gnueabi-ld:
drivers/thermal/tegra/tegra30-tsensor.o:tegra30-tsensor.c:(.text+0x904):
more undefined references to `tegra_fuse_readl' follow
make[1]: *** [/home/dlezcano/Work/src/linux/Makefile:1196: vmlinux] Error 1
make: *** [/home/dlezcano/Work/src/linux/Makefile:215: __sub-make] Error 2



On 16/06/2021 21:04, Dmitry Osipenko wrote:
> Hi,
> 
> This series adds support for the thermal sensor that is found on NVIDIA
> Tegra30 SoC. Sensor monitors temperature and voltage of the SoC, it also
> emits signals to the power management and clock controllers that are
> performing the emergency shut down and the CPU frequency throttling
> when a pre-programmed temperature levels are reached.
> 
> Changelog:
> 
> v4: - Removed DIV2 CPU frequency throttling and cooling device part as was
>       suggested by Daniel Lezcano since we need to notify cpufreq about the
>       updated frequency and change the thermal pressure. The thermal pressure
>       change should co-exists with the cpufreq_cooling. This all needs some
>       more thought, so the DIV2 mitigation will come sometime later.
> 
>     - Added ack from Thierry Reding.
> 
>     - Changed default TZ trips in the device-tree to the silicon temperature
>       levels, instead of the average device levels.
> 
> v3: - No code changes. CC'ed linux-pm, which was previously missed by accident.
>       Not sure how much that is important for the thermal patches, but won't
>       hurt to re-send since only DT binding was reviewed so far.
> 
> v2: - Made a very minor improvement to one error message, it now prints
>       number of channel at which error occurred.
> 
>     - Added r-b from Rob Herring to the binding.
> 
> Dmitry Osipenko (6):
>   dt-bindings: thermal: Add binding for Tegra30 thermal sensor
>   thermal: thermal_of: Stop zone device before unregistering it
>   thermal/drivers/tegra: Add driver for Tegra30 thermal sensor
>   ARM: tegra_defconfig: Enable CONFIG_TEGRA30_TSENSOR
>   ARM: multi_v7_defconfig: Enable CONFIG_TEGRA30_TSENSOR
>   ARM: tegra: Add SoC thermal sensor to Tegra30 device-trees
> 
>  .../thermal/nvidia,tegra30-tsensor.yaml       |  73 ++
>  arch/arm/boot/dts/tegra30.dtsi                |  87 ++-
>  arch/arm/configs/multi_v7_defconfig           |   1 +
>  arch/arm/configs/tegra_defconfig              |   1 +
>  drivers/thermal/tegra/Kconfig                 |   7 +
>  drivers/thermal/tegra/Makefile                |   1 +
>  drivers/thermal/tegra/tegra30-tsensor.c       | 673 ++++++++++++++++++
>  drivers/thermal/thermal_of.c                  |   3 +
>  8 files changed, 842 insertions(+), 4 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/thermal/nvidia,tegra30-tsensor.yaml
>  create mode 100644 drivers/thermal/tegra/tegra30-tsensor.c
>
Dmitry Osipenko June 21, 2021, 5:26 p.m. UTC | #2
21.06.2021 20:13, Daniel Lezcano пишет:
> 
> Hi Dmitry,
> 
> I compiled the your series and got these unresolved.
> 
> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
> `tegra_calc_shared_calib':
> soctherm-fuse.c:(.text+0x60): undefined reference to `tegra_fuse_readl'
> arm-linux-gnueabi-ld: soctherm-fuse.c:(.text+0xf0): undefined reference
> to `tegra_fuse_readl'
> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
> `tegra_calc_tsensor_calib':
> soctherm-fuse.c:(.text+0x144): undefined reference to `tegra_fuse_readl'
> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
> function `tegra_tsensor_fuse_read_spare':
> tegra30-tsensor.c:(.text+0x364): undefined reference to `tegra_fuse_readl'
> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
> function `tegra_tsensor_probe':
> tegra30-tsensor.c:(.text+0x874): undefined reference to `tegra_fuse_readl'
> arm-linux-gnueabi-ld:
> drivers/thermal/tegra/tegra30-tsensor.o:tegra30-tsensor.c:(.text+0x904):
> more undefined references to `tegra_fuse_readl' follow
> make[1]: *** [/home/dlezcano/Work/src/linux/Makefile:1196: vmlinux] Error 1
> make: *** [/home/dlezcano/Work/src/linux/Makefile:215: __sub-make] Error 2

The missing stub was added by [1]. I guess you could take [2] for the
base since Thierry already sent out PR for 5.14, or we could defer the
"thermal/drivers/tegra: Correct compile-testing of drivers" patch till
the next kernel version. Please choose whatever is easier for you.

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=30b44e81772a5caa983000057ce1cd9cb4531647

[2]
https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git/log/?h=for-5.14/soc
Daniel Lezcano June 21, 2021, 6:16 p.m. UTC | #3
On 21/06/2021 19:26, Dmitry Osipenko wrote:
> 21.06.2021 20:13, Daniel Lezcano пишет:
>>
>> Hi Dmitry,
>>
>> I compiled the your series and got these unresolved.
>>
>> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
>> `tegra_calc_shared_calib':
>> soctherm-fuse.c:(.text+0x60): undefined reference to `tegra_fuse_readl'
>> arm-linux-gnueabi-ld: soctherm-fuse.c:(.text+0xf0): undefined reference
>> to `tegra_fuse_readl'
>> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
>> `tegra_calc_tsensor_calib':
>> soctherm-fuse.c:(.text+0x144): undefined reference to `tegra_fuse_readl'
>> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
>> function `tegra_tsensor_fuse_read_spare':
>> tegra30-tsensor.c:(.text+0x364): undefined reference to `tegra_fuse_readl'
>> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
>> function `tegra_tsensor_probe':
>> tegra30-tsensor.c:(.text+0x874): undefined reference to `tegra_fuse_readl'
>> arm-linux-gnueabi-ld:
>> drivers/thermal/tegra/tegra30-tsensor.o:tegra30-tsensor.c:(.text+0x904):
>> more undefined references to `tegra_fuse_readl' follow
>> make[1]: *** [/home/dlezcano/Work/src/linux/Makefile:1196: vmlinux] Error 1
>> make: *** [/home/dlezcano/Work/src/linux/Makefile:215: __sub-make] Error 2
> 
> The missing stub was added by [1]. I guess you could take [2] for the
> base since Thierry already sent out PR for 5.14, or we could defer the
> "thermal/drivers/tegra: Correct compile-testing of drivers" patch till
> the next kernel version. Please choose whatever is easier for you.

I would like to prevent to have more patches floating around. As we are
close the to the merge window, I think we can live with the missing
stubs ATM. But in the future, provide an immutable branch with the
fixes, so we can share it and prevent these issues.

  -- Daniel
Dmitry Osipenko June 21, 2021, 6:25 p.m. UTC | #4
21.06.2021 21:16, Daniel Lezcano пишет:
> On 21/06/2021 19:26, Dmitry Osipenko wrote:
>> 21.06.2021 20:13, Daniel Lezcano пишет:
>>>
>>> Hi Dmitry,
>>>
>>> I compiled the your series and got these unresolved.
>>>
>>> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
>>> `tegra_calc_shared_calib':
>>> soctherm-fuse.c:(.text+0x60): undefined reference to `tegra_fuse_readl'
>>> arm-linux-gnueabi-ld: soctherm-fuse.c:(.text+0xf0): undefined reference
>>> to `tegra_fuse_readl'
>>> arm-linux-gnueabi-ld: drivers/thermal/tegra/soctherm-fuse.o: in function
>>> `tegra_calc_tsensor_calib':
>>> soctherm-fuse.c:(.text+0x144): undefined reference to `tegra_fuse_readl'
>>> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
>>> function `tegra_tsensor_fuse_read_spare':
>>> tegra30-tsensor.c:(.text+0x364): undefined reference to `tegra_fuse_readl'
>>> arm-linux-gnueabi-ld: drivers/thermal/tegra/tegra30-tsensor.o: in
>>> function `tegra_tsensor_probe':
>>> tegra30-tsensor.c:(.text+0x874): undefined reference to `tegra_fuse_readl'
>>> arm-linux-gnueabi-ld:
>>> drivers/thermal/tegra/tegra30-tsensor.o:tegra30-tsensor.c:(.text+0x904):
>>> more undefined references to `tegra_fuse_readl' follow
>>> make[1]: *** [/home/dlezcano/Work/src/linux/Makefile:1196: vmlinux] Error 1
>>> make: *** [/home/dlezcano/Work/src/linux/Makefile:215: __sub-make] Error 2
>>
>> The missing stub was added by [1]. I guess you could take [2] for the
>> base since Thierry already sent out PR for 5.14, or we could defer the
>> "thermal/drivers/tegra: Correct compile-testing of drivers" patch till
>> the next kernel version. Please choose whatever is easier for you.
> 
> I would like to prevent to have more patches floating around. As we are
> close the to the merge window, I think we can live with the missing
> stubs ATM. But in the future, provide an immutable branch with the
> fixes, so we can share it and prevent these issues.

Thank you! There were multiple issues like this during this kernel
release. It's not easy to track all dependencies, I keep forgetting when
and which patches are already applied. Hopefully nobody bisects code
with COMPILE_TEST=y, so this should be a minor issue. Sorry for the
inconvenience.