2017-12-08 19:54:51

by Alexander Dahl

[permalink] [raw]
Subject: no hwmon entries in sysfs for thermal on raspberry pi 1b

Hei hei,

I have v4.15-rc2 vanilla running on the original Raspberry Pi 1B aka
bcm2835 (not rev2, not the 1B+ or plus), compiled with ptxdist /
DistroKit, using bcm2835-rpi-b.dts from arch/arm/boot/dts as device
tree file. I try to get temperature values from the SoC with
lm-sensors (for using it in some other project). After reading an
issue report on the lm-sensors github project [1] I checked my kernel
config. The following is set:

CONFIG_HWMON=y
CONFIG_THERMAL_HWMON=y
CONFIG_THERMAL=y
CONFIG_THERMAL_OF=y
CONFIG_BCM2835_THERMAL=y

There's one thermal zone in sysfs and I get some temperature which I
suppose is the temp of the SoC in m?C:

root@DistroKit:~ cat /sys/class/thermal/thermal_zone0/temp
42236

However, there's nothing below /sys/class/hwmon and I'm wondering why.
There's a thermal zone named 'cpu-thermal' defined and active in DT.

I tried to read some driver code and as far as I understood
thermal_add_hwmon_sysfs() must be called somewhere to get entries for
hwmon in sysfs, and this is done in thermal_zone_device_register(), so
probably a thermal zone must be present somehow, but it seems to be,
at least I can read temp values from it.

What piece am I missing? Is it some kind of configuration I did wrong?

Greets
Alex

[1] https://github.com/groeck/lm-sensors/issues/30

--
?With the first link, the chain is forged. The first speech censured,
the first thought forbidden, the first freedom denied, chains us all
irrevocably.? (Jean-Luc Picard, quoting Judge Aaron Satie)
*** GnuPG-FP: C28E E6B9 0263 95CF 8FAF 08FA 34AD CD00 7221 5CC6 ***


Attachments:
(No filename) (1.57 kB)
signature.asc (833.00 B)
Download all attachments

2017-12-08 21:01:25

by Guenter Roeck

[permalink] [raw]
Subject: Re: no hwmon entries in sysfs for thermal on raspberry pi 1b

On Fri, Dec 08, 2017 at 08:53:10PM +0100, Alexander Dahl wrote:
> Hei hei,
>
> I have v4.15-rc2 vanilla running on the original Raspberry Pi 1B aka
> bcm2835 (not rev2, not the 1B+ or plus), compiled with ptxdist /
> DistroKit, using bcm2835-rpi-b.dts from arch/arm/boot/dts as device
> tree file. I try to get temperature values from the SoC with
> lm-sensors (for using it in some other project). After reading an
> issue report on the lm-sensors github project [1] I checked my kernel
> config. The following is set:
>
> CONFIG_HWMON=y
> CONFIG_THERMAL_HWMON=y
> CONFIG_THERMAL=y
> CONFIG_THERMAL_OF=y
> CONFIG_BCM2835_THERMAL=y
>
> There's one thermal zone in sysfs and I get some temperature which I
> suppose is the temp of the SoC in m?C:
>
> root@DistroKit:~ cat /sys/class/thermal/thermal_zone0/temp
> 42236
>
> However, there's nothing below /sys/class/hwmon and I'm wondering why.
> There's a thermal zone named 'cpu-thermal' defined and active in DT.
>
> I tried to read some driver code and as far as I understood
> thermal_add_hwmon_sysfs() must be called somewhere to get entries for
> hwmon in sysfs, and this is done in thermal_zone_device_register(), so
> probably a thermal zone must be present somehow, but it seems to be,
> at least I can read temp values from it.
>
> What piece am I missing? Is it some kind of configuration I did wrong?
>
On devicetree systems, the thermal subsystem initializes thermal zones with
of_parse_thermal_zones(). This function explicitly disables registration of
thermal zone sensors as hwmon devices because it _could_ be that the
thermal zone sensor is registered through hwmon.

of_parse_thermal_zones() runs independently of the actual thermal sensor
registration at boot time, so thermal drivers registering their sensors
using thermal_zone_of_sensor_register() don't really have a choice or
means to tell the thermal subsystem otherwise. This affects all drivers
which register a thermal zone with thermal_zone_of_sensor_register();
they simply won't register as hwmon devices.

I don't know a feasible solution at this time. There was a proposal to
introduce a new devicetree property, but that would be Linux specific and
also risky (it could be wrongly selected for a sensor which _does_ register
through hwmon).

Guenter