2019-10-30 16:42:30

by Chen-Yu Tsai

[permalink] [raw]
Subject: [PATCH] thermal: brcmstb: enable hwmon

From: Chen-Yu Tsai <[email protected]>

By defaul of-based thermal driver do not have hwmon entries registered.

Do this explicitly so users can use standard hwmon interfaces and tools
to read the temperature.

This is based on similar changes for bcm2835_thermal in commit
d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").

Signed-off-by: Chen-Yu Tsai <[email protected]>
---

This patch was only compile tested. A similar patch [1] was submitted to
the downstream kernel, which I did build and actually run on a Raspberry
Pi 4.

This one for mainline is much simpler, as it does not need to deal with
the error path or device removal, due to the use of devres.

[1] https://github.com/raspberrypi/linux/pull/3307

---
drivers/thermal/broadcom/brcmstb_thermal.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/thermal/broadcom/brcmstb_thermal.c b/drivers/thermal/broadcom/brcmstb_thermal.c
index 5825ac581f56..8353aaa4d624 100644
--- a/drivers/thermal/broadcom/brcmstb_thermal.c
+++ b/drivers/thermal/broadcom/brcmstb_thermal.c
@@ -21,6 +21,8 @@
#include <linux/of_device.h>
#include <linux/thermal.h>

+#include "../thermal_hwmon.h"
+
#define AVS_TMON_STATUS 0x00
#define AVS_TMON_STATUS_valid_msk BIT(11)
#define AVS_TMON_STATUS_data_msk GENMASK(10, 1)
@@ -343,6 +345,12 @@ static int brcmstb_thermal_probe(struct platform_device *pdev)
return ret;
}

+ /* hwmon not enabled by default. Enable it here. */
+ thermal->tzp->no_hwmon = false;
+ ret = thermal_add_hwmon_sysfs(thermal);
+ if (ret)
+ return ret;
+
dev_info(&pdev->dev, "registered AVS TMON of-sensor driver\n");

return 0;
--
2.20.1


2019-10-30 17:01:13

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] thermal: brcmstb: enable hwmon

Hi Chen-Yu,

On 10/30/19 9:38 AM, Chen-Yu Tsai wrote:
> From: Chen-Yu Tsai <[email protected]>
>
> By defaul of-based thermal driver do not have hwmon entries registered.
>
> Do this explicitly so users can use standard hwmon interfaces and tools
> to read the temperature.
>
> This is based on similar changes for bcm2835_thermal in commit
> d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").
>
> Signed-off-by: Chen-Yu Tsai <[email protected]>

Tested-by: Florian Fainelli <[email protected]>

There a number of patches that I need to get upstream from our
downstream tree, because right now the temperatures reported are note
quite in the expected units..
--
Florian

2019-10-30 17:19:10

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] thermal: brcmstb: enable hwmon

On 10/30/19 9:57 AM, Florian Fainelli wrote:
> Hi Chen-Yu,
>
> On 10/30/19 9:38 AM, Chen-Yu Tsai wrote:
>> From: Chen-Yu Tsai <[email protected]>
>>
>> By defaul of-based thermal driver do not have hwmon entries registered.
>>
>> Do this explicitly so users can use standard hwmon interfaces and tools
>> to read the temperature.
>>
>> This is based on similar changes for bcm2835_thermal in commit
>> d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").
>>
>> Signed-off-by: Chen-Yu Tsai <[email protected]>
>
> Tested-by: Florian Fainelli <[email protected]>
>
> There a number of patches that I need to get upstream from our
> downstream tree, because right now the temperatures reported are note
> quite in the expected units..

Oh yes, because we call the standard thermal framework helpers to
extract the coefficients, and we never made that a mandatory property,
so our firmware does not provide that information and the raw DAC code
is not properly converted, will fix that as well.
--
Florian

2019-10-31 13:13:09

by Stefan Wahren

[permalink] [raw]
Subject: Re: [PATCH] thermal: brcmstb: enable hwmon

Hi Chen-Yu,

Am 30.10.19 um 17:38 schrieb Chen-Yu Tsai:
> From: Chen-Yu Tsai <[email protected]>
>
> By defaul of-based thermal driver do not have hwmon entries registered.
>
> Do this explicitly so users can use standard hwmon interfaces and tools
> to read the temperature.
>
> This is based on similar changes for bcm2835_thermal in commit
> d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").
>
> Signed-off-by: Chen-Yu Tsai <[email protected]>
> ---
>
> This patch was only compile tested. A similar patch [1] was submitted to
> the downstream kernel, which I did build and actually run on a Raspberry
> Pi 4.

just a note: from my understanding [2] the brcmstb_thermal isn't the
right driver for BCM2711. Please consider the current downstream
solution for BCM2711 support as a quick hack to avoid writing a new
thermal driver. But must confess that i didn't test Florian's recent
changes yet.

Regards
Stefan

[2] -
https://github.com/raspberrypi/linux/issues/3101#issuecomment-527554223

>
> This one for mainline is much simpler, as it does not need to deal with
> the error path or device removal, due to the use of devres.
>
> [1] https://github.com/raspberrypi/linux/pull/3307
>
> ---
> drivers/thermal/broadcom/brcmstb_thermal.c | 8 ++++++++
> 1 file changed, 8 insertions(+)

2019-11-01 03:47:34

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH] thermal: brcmstb: enable hwmon

On 10/31/2019 6:08 AM, Stefan Wahren wrote:
> Hi Chen-Yu,
>
> Am 30.10.19 um 17:38 schrieb Chen-Yu Tsai:
>> From: Chen-Yu Tsai <[email protected]>
>>
>> By defaul of-based thermal driver do not have hwmon entries registered.
>>
>> Do this explicitly so users can use standard hwmon interfaces and tools
>> to read the temperature.
>>
>> This is based on similar changes for bcm2835_thermal in commit
>> d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").
>>
>> Signed-off-by: Chen-Yu Tsai <[email protected]>
>> ---
>>
>> This patch was only compile tested. A similar patch [1] was submitted to
>> the downstream kernel, which I did build and actually run on a Raspberry
>> Pi 4.
>
> just a note: from my understanding [2] the brcmstb_thermal isn't the
> right driver for BCM2711. Please consider the current downstream
> solution for BCM2711 support as a quick hack to avoid writing a new
> thermal driver. But must confess that i didn't test Florian's recent
> changes yet.

The brcmstb_thermal driver is for chips with an AVS_TMON whereas the
2711 does not have it AFAICT, even if the registers are there, the
hardware is not present (or so have I been told).

The AVS_RO register you are being pointed out may work, although the
data is over 10 bits (not 11) and the valid bit is 10 (not 11). It looks
like you may have to check bit 16 as well for a measurement being done
or not.
--
Florian

2019-11-01 03:49:56

by Chen-Yu Tsai

[permalink] [raw]
Subject: Re: [PATCH] thermal: brcmstb: enable hwmon

On Thu, Oct 31, 2019 at 9:09 PM Stefan Wahren <[email protected]> wrote:
>
> Hi Chen-Yu,
>
> Am 30.10.19 um 17:38 schrieb Chen-Yu Tsai:
> > From: Chen-Yu Tsai <[email protected]>
> >
> > By defaul of-based thermal driver do not have hwmon entries registered.
> >
> > Do this explicitly so users can use standard hwmon interfaces and tools
> > to read the temperature.
> >
> > This is based on similar changes for bcm2835_thermal in commit
> > d56c19d07e0b ("thermal: bcm2835: enable hwmon explicitly").
> >
> > Signed-off-by: Chen-Yu Tsai <[email protected]>
> > ---
> >
> > This patch was only compile tested. A similar patch [1] was submitted to
> > the downstream kernel, which I did build and actually run on a Raspberry
> > Pi 4.
>
> just a note: from my understanding [2] the brcmstb_thermal isn't the
> right driver for BCM2711. Please consider the current downstream
> solution for BCM2711 support as a quick hack to avoid writing a new
> thermal driver. But must confess that i didn't test Florian's recent
> changes yet.

Thanks for the tip. I only saw the thread after posting this patch.

ChenYu

> Regards
> Stefan
>
> [2] -
> https://github.com/raspberrypi/linux/issues/3101#issuecomment-527554223
>
> >
> > This one for mainline is much simpler, as it does not need to deal with
> > the error path or device removal, due to the use of devres.
> >
> > [1] https://github.com/raspberrypi/linux/pull/3307
> >
> > ---
> > drivers/thermal/broadcom/brcmstb_thermal.c | 8 ++++++++
> > 1 file changed, 8 insertions(+)
>