diff mbox series

thermal: rcar_gen3_thermal: Add supports the hwmon thermal sysfs

Message ID 1542091543-31597-1-git-send-email-na-hoan@jinso.co.jp (mailing list archive)
State Under Review
Delegated to: Geert Uytterhoeven
Headers show
Series thermal: rcar_gen3_thermal: Add supports the hwmon thermal sysfs | expand

Commit Message

グェン・アン・ホァン Nov. 13, 2018, 6:45 a.m. UTC
From: Hoan Nguyen An <na-hoan@jinso.co.jp>

Gen3 thermal registered by devm_thermal_zone_of_sensor_register()
and this function does not enable hwmon sysfs extensions.
This patch enables it to keep compatibility to common systems

Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
---
 drivers/thermal/rcar_gen3_thermal.c | 7 +++++++
 1 file changed, 7 insertions(+)

Comments

Geert Uytterhoeven Nov. 13, 2018, 8:02 a.m. UTC | #1
Hi Hoan,

Thanks for your patch!

Please run scripts/get_maintainer.pl on your patches, to get the list of
maintainers.

CC thermal

On Tue, Nov 13, 2018 at 7:46 AM Nguyen An Hoan <na-hoan@jinso.co.jp> wrote:
>
> From: Hoan Nguyen An <na-hoan@jinso.co.jp>
>
> Gen3 thermal registered by devm_thermal_zone_of_sensor_register()
> and this function does not enable hwmon sysfs extensions.
> This patch enables it to keep compatibility to common systems
>
> Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
> ---
>  drivers/thermal/rcar_gen3_thermal.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
> index 75786cc..ae172db 100644
> --- a/drivers/thermal/rcar_gen3_thermal.c
> +++ b/drivers/thermal/rcar_gen3_thermal.c
> @@ -19,6 +19,7 @@
>  #include <linux/thermal.h>
>
>  #include "thermal_core.h"
> +#include "thermal_hwmon.h"
>
>  /* Register offsets */
>  #define REG_GEN3_IRQSTR                0x04
> @@ -429,6 +430,12 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
>                 if (ret < 0)
>                         goto error_unregister;
>
> +               /* Enable hwmon thermal sysfs */
> +               tsc->zone->tzp->no_hwmon = false;
> +               ret = thermal_add_hwmon_sysfs(tsc->zone);
> +               if (ret)
> +                       dev_err(dev, "Can't register hwmon sysfs\n");
> +
>                 dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret);
>         }
>

You forgot to call thermal_remove_hwmon_sysfs() in the .remove()
callback?

Gr{oetje,eeting}s,

                        Geert
Wolfram Sang Nov. 13, 2018, 11:57 a.m. UTC | #2
> Please run scripts/get_maintainer.pl on your patches, to get the list of
> maintainers.
> 
> CC thermal

Thanks, Geert!


Hi Hoan,

> +		/* Enable hwmon thermal sysfs */
> +		tsc->zone->tzp->no_hwmon = false;

A driver diving so deep into core structures always looks suspicious.
Questions I have:

1)

We have that code also in rcar_thermal.c, but the commit introducing
it[1] has a reason which does not apply for this driver, or?

2)

of_parse_thermal_zones() intentionally sets this flag with this
comment:

/* No hwmon because there might be hwmon drivers registering */

Why does it not apply for us?

3)

If it turns out, we really need it, there should be some thermal core
helper or flag for it, I'd think...

Regards,

   Wolfram

[1] 64a411e8042e ("thermal: rcar-thermal: enable hwmon when thermal_zone_of_sensor_register is used")
グェン・アン・ホァン Dec. 4, 2018, 9:43 a.m. UTC | #3
Dear Geert-san, Wolfram-san

I'm sorry for the delay at the comments of this patch.

And I think it's not hurry!

> +               /* Enable hwmon thermal sysfs */
> +               tsc->zone->tzp->no_hwmon = false;
> +               ret = thermal_add_hwmon_sysfs(tsc->zone);
> +               if (ret)
> +                       dev_err(dev, "Can't register hwmon sysfs\n");
> +
>                  dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret);
>          }
>
> You forgot to call thermal_remove_hwmon_sysfs() in the .remove()
> callback?

I got it, Thanks!

On 2018/11/13 20:57, Wolfram Sang wrote:
> Hi Hoan,
>
>> +		/* Enable hwmon thermal sysfs */
>> +		tsc->zone->tzp->no_hwmon = false;
> A driver diving so deep into core structures always looks suspicious.
> Questions I have:
>
> 1)
>
> We have that code also in rcar_thermal.c, but the commit introducing
> it[1] has a reason which does not apply for this driver, or?

This is not the reason to apply this patch.

I would say here are the general Linux systems, or as if the systems

that thermal was registered by "thermal_zone_device_register()".

The Linux community has developed tools that use this, such as 
"lm-sensors",

my Ubuntu and rcar-Gen2 are still compatible with lm-sensors but Gen3 
does not.

Although I do not want to say paradoxical that the kernel drivers must 
be compatible

with the user-space applications.

> 2)
>
> of_parse_thermal_zones() intentionally sets this flag with this
> comment:
>
> /* No hwmon because there might be hwmon drivers registering */
>
> Why does it not apply for us?
I think so it should be registered separately.
> 3)
>
> If it turns out, we really need it, there should be some thermal core
> helper or flag for it, I'd think...

Yes, It up to you!

> Regards,
>
>     Wolfram
>
> [1] 64a411e8042e ("thermal: rcar-thermal: enable hwmon when thermal_zone_of_sensor_register is used")
>
Thank you very much for your comments :-)!

Hoan.
Geert Uytterhoeven Dec. 11, 2018, 7:42 a.m. UTC | #4
CCing Marek, since he was recently looking into the driver

On Tue, Nov 13, 2018 at 7:46 AM Nguyen An Hoan <na-hoan@jinso.co.jp> wrote:
>
> From: Hoan Nguyen An <na-hoan@jinso.co.jp>
>
> Gen3 thermal registered by devm_thermal_zone_of_sensor_register()
> and this function does not enable hwmon sysfs extensions.
> This patch enables it to keep compatibility to common systems
>
> Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
> ---
>  drivers/thermal/rcar_gen3_thermal.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
> index 75786cc..ae172db 100644
> --- a/drivers/thermal/rcar_gen3_thermal.c
> +++ b/drivers/thermal/rcar_gen3_thermal.c
> @@ -19,6 +19,7 @@
>  #include <linux/thermal.h>
>
>  #include "thermal_core.h"
> +#include "thermal_hwmon.h"
>
>  /* Register offsets */
>  #define REG_GEN3_IRQSTR                0x04
> @@ -429,6 +430,12 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
>                 if (ret < 0)
>                         goto error_unregister;
>
> +               /* Enable hwmon thermal sysfs */
> +               tsc->zone->tzp->no_hwmon = false;
> +               ret = thermal_add_hwmon_sysfs(tsc->zone);
> +               if (ret)
> +                       dev_err(dev, "Can't register hwmon sysfs\n");
> +
>                 dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret);
>         }
Marek Vasut Dec. 12, 2018, 1:52 a.m. UTC | #5
On 12/11/2018 08:42 AM, Geert Uytterhoeven wrote:
> CCing Marek, since he was recently looking into the driver
> 
> On Tue, Nov 13, 2018 at 7:46 AM Nguyen An Hoan <na-hoan@jinso.co.jp> wrote:
>>
>> From: Hoan Nguyen An <na-hoan@jinso.co.jp>
>>
>> Gen3 thermal registered by devm_thermal_zone_of_sensor_register()
>> and this function does not enable hwmon sysfs extensions.
>> This patch enables it to keep compatibility to common systems
>>
>> Signed-off-by: Hoan Nguyen An <na-hoan@jinso.co.jp>
>> ---
>>  drivers/thermal/rcar_gen3_thermal.c | 7 +++++++
>>  1 file changed, 7 insertions(+)
>>
>> diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
>> index 75786cc..ae172db 100644
>> --- a/drivers/thermal/rcar_gen3_thermal.c
>> +++ b/drivers/thermal/rcar_gen3_thermal.c
>> @@ -19,6 +19,7 @@
>>  #include <linux/thermal.h>
>>
>>  #include "thermal_core.h"
>> +#include "thermal_hwmon.h"
>>
>>  /* Register offsets */
>>  #define REG_GEN3_IRQSTR                0x04
>> @@ -429,6 +430,12 @@ static int rcar_gen3_thermal_probe(struct platform_device *pdev)
>>                 if (ret < 0)
>>                         goto error_unregister;
>>
>> +               /* Enable hwmon thermal sysfs */
>> +               tsc->zone->tzp->no_hwmon = false;
>> +               ret = thermal_add_hwmon_sysfs(tsc->zone);
>> +               if (ret)
>> +                       dev_err(dev, "Can't register hwmon sysfs\n");
>> +
>>                 dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret);
>>         }

I submitted the following series [1], I think this might be a more
systematic approach to this topic than digging deep into tz structures.

[1] https://patchwork.kernel.org/cover/10725477/
diff mbox series

Patch

diff --git a/drivers/thermal/rcar_gen3_thermal.c b/drivers/thermal/rcar_gen3_thermal.c
index 75786cc..ae172db 100644
--- a/drivers/thermal/rcar_gen3_thermal.c
+++ b/drivers/thermal/rcar_gen3_thermal.c
@@ -19,6 +19,7 @@ 
 #include <linux/thermal.h>
 
 #include "thermal_core.h"
+#include "thermal_hwmon.h"
 
 /* Register offsets */
 #define REG_GEN3_IRQSTR		0x04
@@ -429,6 +430,12 @@  static int rcar_gen3_thermal_probe(struct platform_device *pdev)
 		if (ret < 0)
 			goto error_unregister;
 
+		/* Enable hwmon thermal sysfs */
+		tsc->zone->tzp->no_hwmon = false;
+		ret = thermal_add_hwmon_sysfs(tsc->zone);
+		if (ret)
+			dev_err(dev, "Can't register hwmon sysfs\n");
+
 		dev_info(dev, "TSC%d: Loaded %d trip points\n", i, ret);
 	}