* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-05-29 15:52 ` Guenter Roeck 0 siblings, 0 replies; 14+ messages in thread From: Guenter Roeck @ 2020-05-29 15:52 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team, Darren Hart, Zhang Rui, Gayatri Kammela, Len Brown, Johannes Berg, Intel Linux Wireless, Sascha Hauer, Ido Schimmel, Baolin Wang, Jiri Pirko, Orson Zhai, Thomas Gleixner, Kalle Valo, Support Opensource, Enrico Weigelt, Peter Kaestle, Sebastian Reichel, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Niklas Söderlund, Shawn Guo, David S . Miller, Andy Shevchenko On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: > Prepare for making the drivers not access tzd's private members. > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > --- > drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 13 +++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 14d3b1b94c4f..f2a5c5ee3455 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) > thermal_zone_device_init(tz); > } > > +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, > + enum thermal_device_mode mode) > +{ > + int ret = 0; > + > + mutex_lock(&tz->lock); > + > + /* do nothing if mode isn't changing */ > + if (mode == tz->mode) { > + mutex_unlock(&tz->lock); > + Nit: unnecessary empty line. > + return ret; > + } > + > + if (tz->ops->set_mode) > + ret = tz->ops->set_mode(tz, mode); > + > + if (!ret) > + tz->mode = mode; > + > + mutex_unlock(&tz->lock); > + > + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); > + > + return ret; > +} > + > +int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_enable); Other exports in thermal/ use EXPORT_SYMBOL_GPL. > + > +int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_disable); > + > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ > + enum thermal_device_mode mode; > + > + mutex_lock(&tz->lock); > + > + mode = tz->mode; > + > + mutex_unlock(&tz->lock); > + > + return mode == THERMAL_DEVICE_ENABLED; > +} > +EXPORT_SYMBOL(thermal_zone_device_is_enabled); > + > void thermal_zone_device_update(struct thermal_zone_device *tz, > enum thermal_notify_event event) > { > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index a808f6fa2777..df013c39ba9b 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); > > void thermal_cdev_update(struct thermal_cooling_device *); > void thermal_notify_framework(struct thermal_zone_device *, int); > +int thermal_zone_device_enable(struct thermal_zone_device *tz); > +int thermal_zone_device_disable(struct thermal_zone_device *tz); > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); > #else > static inline struct thermal_zone_device *thermal_zone_device_register( > const char *type, int trips, int mask, void *devdata, > @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) > static inline void thermal_notify_framework(struct thermal_zone_device *tz, > int trip) > { } > + > +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int > +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ return -ENODEV; } > #endif /* CONFIG_THERMAL */ > > #endif /* __THERMAL_H__ */ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-05-29 15:52 ` Guenter Roeck 0 siblings, 0 replies; 14+ messages in thread From: Guenter Roeck @ 2020-05-29 15:52 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: > Prepare for making the drivers not access tzd's private members. > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > --- > drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 13 +++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 14d3b1b94c4f..f2a5c5ee3455 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) > thermal_zone_device_init(tz); > } > > +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, > + enum thermal_device_mode mode) > +{ > + int ret = 0; > + > + mutex_lock(&tz->lock); > + > + /* do nothing if mode isn't changing */ > + if (mode == tz->mode) { > + mutex_unlock(&tz->lock); > + Nit: unnecessary empty line. > + return ret; > + } > + > + if (tz->ops->set_mode) > + ret = tz->ops->set_mode(tz, mode); > + > + if (!ret) > + tz->mode = mode; > + > + mutex_unlock(&tz->lock); > + > + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); > + > + return ret; > +} > + > +int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_enable); Other exports in thermal/ use EXPORT_SYMBOL_GPL. > + > +int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_disable); > + > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ > + enum thermal_device_mode mode; > + > + mutex_lock(&tz->lock); > + > + mode = tz->mode; > + > + mutex_unlock(&tz->lock); > + > + return mode == THERMAL_DEVICE_ENABLED; > +} > +EXPORT_SYMBOL(thermal_zone_device_is_enabled); > + > void thermal_zone_device_update(struct thermal_zone_device *tz, > enum thermal_notify_event event) > { > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index a808f6fa2777..df013c39ba9b 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); > > void thermal_cdev_update(struct thermal_cooling_device *); > void thermal_notify_framework(struct thermal_zone_device *, int); > +int thermal_zone_device_enable(struct thermal_zone_device *tz); > +int thermal_zone_device_disable(struct thermal_zone_device *tz); > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); > #else > static inline struct thermal_zone_device *thermal_zone_device_register( > const char *type, int trips, int mask, void *devdata, > @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) > static inline void thermal_notify_framework(struct thermal_zone_device *tz, > int trip) > { } > + > +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int > +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ return -ENODEV; } > #endif /* CONFIG_THERMAL */ > > #endif /* __THERMAL_H__ */ ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers 2020-05-29 15:52 ` Guenter Roeck (?) @ 2020-06-01 11:16 ` Andrzej Pietrasiewicz -1 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-06-01 11:16 UTC (permalink / raw) To: Guenter Roeck Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team, Darren Hart, Zhang Rui, Gayatri Kammela, Len Brown, Johannes Berg, Intel Linux Wireless, Sascha Hauer, Ido Schimmel, Baolin Wang, Jiri Pirko, Orson Zhai, Thomas Gleixner, Kalle Valo, Support Opensource, Enrico Weigelt, Peter Kaestle, Sebastian Reichel, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Niklas Söderlund, Shawn Guo, David S . Miller, Andy Shevchenko Hi Guenter, W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: > On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >> Prepare for making the drivers not access tzd's private members. >> >> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> <snip> >> + > Nit: unnecessary empty line. > >> + return ret; <snip> >> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >> +} >> +EXPORT_SYMBOL(thermal_zone_device_enable); > > Other exports in thermal/ use EXPORT_SYMBOL_GPL. Other than that does it look good to you? I can send a v5 where the two above will be corrected, but did you have a chance to review patches 7-11? Andrzej ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-01 11:16 ` Andrzej Pietrasiewicz 0 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-06-01 11:16 UTC (permalink / raw) To: Guenter Roeck Cc: Emmanuel Grumbach, Heiko Stuebner, Kalle Valo, linux-wireless, Peter Kaestle, platform-driver-x86, Vishal Kulkarni, Luca Coelho, Miquel Raynal, Shawn Guo, kernel, Fabio Estevam, Amit Kucheria, linux-rockchip, Chunyan Zhang, Daniel Lezcano, linux-acpi, linux-arm-kernel, Darren Hart, Zhang Rui, Gayatri Kammela, NXP Linux Team, Johannes Berg, linux-pm, Sascha Hauer, Intel Linux Wireless, Ido Schimmel, Niklas Söderlund, Jiri Pirko, Orson Zhai, Thomas Gleixner, Allison Randal, Support Opensource, netdev, Rafael J . Wysocki, Sebastian Reichel, linux-renesas-soc, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Baolin Wang, Len Brown, Enrico Weigelt, David S . Miller, Andy Shevchenko Hi Guenter, W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: > On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >> Prepare for making the drivers not access tzd's private members. >> >> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> <snip> >> + > Nit: unnecessary empty line. > >> + return ret; <snip> >> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >> +} >> +EXPORT_SYMBOL(thermal_zone_device_enable); > > Other exports in thermal/ use EXPORT_SYMBOL_GPL. Other than that does it look good to you? I can send a v5 where the two above will be corrected, but did you have a chance to review patches 7-11? Andrzej _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-01 11:16 ` Andrzej Pietrasiewicz 0 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-06-01 11:16 UTC (permalink / raw) To: Guenter Roeck Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team Hi Guenter, W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: > On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >> Prepare for making the drivers not access tzd's private members. >> >> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> <snip> >> + > Nit: unnecessary empty line. > >> + return ret; <snip> >> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >> +} >> +EXPORT_SYMBOL(thermal_zone_device_enable); > > Other exports in thermal/ use EXPORT_SYMBOL_GPL. Other than that does it look good to you? I can send a v5 where the two above will be corrected, but did you have a chance to review patches 7-11? Andrzej ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers 2020-06-01 11:16 ` Andrzej Pietrasiewicz (?) @ 2020-06-01 13:40 ` Guenter Roeck -1 siblings, 0 replies; 14+ messages in thread From: Guenter Roeck @ 2020-06-01 13:40 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team, Darren Hart, Zhang Rui, Gayatri Kammela, Len Brown, Johannes Berg, Intel Linux Wireless, Sascha Hauer, Ido Schimmel, Baolin Wang, Jiri Pirko, Orson Zhai, Thomas Gleixner, Kalle Valo, Support Opensource, Enrico Weigelt, Peter Kaestle, Sebastian Reichel, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Niklas Söderlund, Shawn Guo, David S . Miller, Andy Shevchenko On 6/1/20 4:16 AM, Andrzej Pietrasiewicz wrote: > Hi Guenter, > > W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: >> On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >>> Prepare for making the drivers not access tzd's private members. >>> >>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > > <snip> > >>> + >> Nit: unnecessary empty line. >> >>> + return ret; > > <snip> > >>> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >>> +} >>> +EXPORT_SYMBOL(thermal_zone_device_enable); >> >> Other exports in thermal/ use EXPORT_SYMBOL_GPL. > > Other than that does it look good to you? Yes, it does. > I can send a v5 where the two above will be corrected, but did you have > a chance to review patches 7-11? > Not yet. I got distracted, sorry. Hopefully I'll get to it today or tomorrow. Guenter ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-01 13:40 ` Guenter Roeck 0 siblings, 0 replies; 14+ messages in thread From: Guenter Roeck @ 2020-06-01 13:40 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: Emmanuel Grumbach, Heiko Stuebner, Kalle Valo, linux-wireless, Peter Kaestle, platform-driver-x86, Vishal Kulkarni, Luca Coelho, Miquel Raynal, Shawn Guo, kernel, Fabio Estevam, Amit Kucheria, linux-rockchip, Chunyan Zhang, Daniel Lezcano, linux-acpi, linux-arm-kernel, Darren Hart, Zhang Rui, Gayatri Kammela, NXP Linux Team, Johannes Berg, linux-pm, Sascha Hauer, Intel Linux Wireless, Ido Schimmel, Niklas Söderlund, Jiri Pirko, Orson Zhai, Thomas Gleixner, Allison Randal, Support Opensource, netdev, Rafael J . Wysocki, Sebastian Reichel, linux-renesas-soc, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Baolin Wang, Len Brown, Enrico Weigelt, David S . Miller, Andy Shevchenko On 6/1/20 4:16 AM, Andrzej Pietrasiewicz wrote: > Hi Guenter, > > W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: >> On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >>> Prepare for making the drivers not access tzd's private members. >>> >>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > > <snip> > >>> + >> Nit: unnecessary empty line. >> >>> + return ret; > > <snip> > >>> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >>> +} >>> +EXPORT_SYMBOL(thermal_zone_device_enable); >> >> Other exports in thermal/ use EXPORT_SYMBOL_GPL. > > Other than that does it look good to you? Yes, it does. > I can send a v5 where the two above will be corrected, but did you have > a chance to review patches 7-11? > Not yet. I got distracted, sorry. Hopefully I'll get to it today or tomorrow. Guenter _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-01 13:40 ` Guenter Roeck 0 siblings, 0 replies; 14+ messages in thread From: Guenter Roeck @ 2020-06-01 13:40 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team On 6/1/20 4:16 AM, Andrzej Pietrasiewicz wrote: > Hi Guenter, > > W dniu 29.05.2020 o 17:52, Guenter Roeck pisze: >> On Thu, May 28, 2020 at 09:20:46PM +0200, Andrzej Pietrasiewicz wrote: >>> Prepare for making the drivers not access tzd's private members. >>> >>> Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> > > <snip> > >>> + >> Nit: unnecessary empty line. >> >>> + return ret; > > <snip> > >>> + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); >>> +} >>> +EXPORT_SYMBOL(thermal_zone_device_enable); >> >> Other exports in thermal/ use EXPORT_SYMBOL_GPL. > > Other than that does it look good to you? Yes, it does. > I can send a v5 where the two above will be corrected, but did you have > a chance to review patches 7-11? > Not yet. I got distracted, sorry. Hopefully I'll get to it today or tomorrow. Guenter ^ permalink raw reply [flat|nested] 14+ messages in thread
[parent not found: <Message-ID: <4493c0e4-51aa-3907-810c-74949ff27ca4@samsung.com>]
* [PATCH v4 00/11] Stop monitoring disabled devices [not found] <Message-ID: <4493c0e4-51aa-3907-810c-74949ff27ca4@samsung.com> @ 2020-05-28 19:20 ` Andrzej Pietrasiewicz 2020-05-28 19:20 ` Andrzej Pietrasiewicz 0 siblings, 1 reply; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-05-28 19:20 UTC (permalink / raw) To: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip Cc: Rafael J . Wysocki, Len Brown, Vishal Kulkarni, David S . Miller, Jiri Pirko, Ido Schimmel, Johannes Berg, Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless, Kalle Valo, Peter Kaestle, Darren Hart, Andy Shevchenko, Sebastian Reichel, Miquel Raynal, Daniel Lezcano, Amit Kucheria, Support Opensource, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team, Niklas Söderlund, Heiko Stuebner, Orson Zhai, Baolin Wang, Chunyan Zhang, Zhang Rui, Allison Randal, Enrico Weigelt, Gayatri Kammela, Thomas Gleixner, Bartlomiej Zolnierkiewicz, Andrzej Pietrasiewicz, kernel There is already a reviewed v3 (not to be confused with RFC v3), which can be considered for merging: https://lore.kernel.org/linux-pm/20200423165705.13585-2-andrzej.p@collabora.com/ Let me cite Bartlomiej Zolnierkiewicz: "I couldn't find the problems with the patch itself (no new issues being introduced, all changes seem to be improvements over the current situation). Also the patch is not small but it also not that big and it mostly removes the code: 17 files changed, 105 insertions(+), 244 deletions(-)" There have been raised some concerns about bisectability and about introducing "initial_mode" member in struct thermal_zone_params. This v4 series addresses those concerns: it takes a more gradual approach and uses explicit tzd state initialization, hence there are more insertions than in v3, and the net effect is -63 lines versus -139 lines in v3. Patch 2/11 converts the 3 drivers which don't store their mode in enum thermal_device_mode to do so. Once that is cleared, struct thermal_zone_device gains its "mode" member (patch 3/11) and then all interested drivers change the location where they store their state: instead of storing it in some variable in a driver, they store it in struct thermal_zone_device (patch 4/11). Patch 4/11 does not introduce other changes. Then get_mode() driver method becomes redundant, and so it is removed (patch 5/11). This is the first part of the groundwork. The second part of the groundwork is to add (patch 6/11) and use (patch 7/11) helpers for accessing tzd's state from drivers. From this moment on the drivers don't access tzd->mode directly. Please note that after patch 4/11 all thermal zone devices have their mode implicitly initialized to DISABLED, as a result of kzalloc and THERMAL_DEVICE_DISABLED == 0. This is not a problem from the point of view of polling them, because their state is not considered when deciding to poll or to cease polling. In preparation for considering tzd's state when deciding to poll or to cease polling it ensured (patch 8/11 and some in patch 7/11) that all the drivers are explicitly initialized with regard to their state. With all that groundwork in place now it makes sense to modify thermal_core so that it stops polling DISABLED devices (patch 9/11), which is the ultimate purpose of this work. While at it, some set_mode() implementations only change the polling variables to make the core stop polling their drivers, but that is now unnecessary and those set_mode() implementations are removed. In other implementations polling variables modifications are removed. Some other set_mode() implementations are simplified or removed (patch 10/11). set_mode() is now only called when tzd's mode is about to change. Actual setting is performed in thermal_core, in thermal_zone_device_set_mode(). The meaning of set_mode() callback is actually to notify the driver about the mode being changed and giving the driver a chance to oppose such a change. To better reflect the purpose of the method it is renamed to change_mode() (patch 11/11). Andrzej Pietrasiewicz (11): acpi: thermal: Fix error handling in the register function thermal: Store thermal mode in a dedicated enum thermal: Add current mode to thermal zone device thermal: Store device mode in struct thermal_zone_device thermal: remove get_mode() operation of drivers thermal: Add mode helpers thermal: Use mode helpers in drivers thermal: Explicitly enable non-changing thermal zone devices thermal: core: Stop polling DISABLED thermal devices thermal: Simplify or eliminate unnecessary set_mode() methods thermal: Rename set_mode() to change_mode() drivers/acpi/thermal.c | 75 +++++---------- .../ethernet/chelsio/cxgb4/cxgb4_thermal.c | 8 ++ .../ethernet/mellanox/mlxsw/core_thermal.c | 91 ++++--------------- drivers/net/wireless/intel/iwlwifi/mvm/tt.c | 9 +- drivers/platform/x86/acerhdf.c | 33 +++---- drivers/platform/x86/intel_mid_thermal.c | 6 ++ drivers/power/supply/power_supply_core.c | 9 +- drivers/thermal/armada_thermal.c | 6 ++ drivers/thermal/da9062-thermal.c | 16 +--- drivers/thermal/dove_thermal.c | 6 ++ drivers/thermal/hisi_thermal.c | 6 +- drivers/thermal/imx_thermal.c | 57 ++++-------- .../intel/int340x_thermal/int3400_thermal.c | 43 +++------ .../int340x_thermal/int340x_thermal_zone.c | 5 + drivers/thermal/intel/intel_pch_thermal.c | 5 + .../thermal/intel/intel_quark_dts_thermal.c | 34 ++----- drivers/thermal/intel/intel_soc_dts_iosf.c | 3 + drivers/thermal/intel/x86_pkg_temp_thermal.c | 6 ++ drivers/thermal/kirkwood_thermal.c | 7 ++ drivers/thermal/rcar_thermal.c | 9 +- drivers/thermal/rockchip_thermal.c | 6 +- drivers/thermal/spear_thermal.c | 7 ++ drivers/thermal/sprd_thermal.c | 6 +- drivers/thermal/st/st_thermal.c | 5 + drivers/thermal/thermal_core.c | 76 ++++++++++++++-- drivers/thermal/thermal_of.c | 51 ++--------- drivers/thermal/thermal_sysfs.c | 37 +------- include/linux/thermal.h | 19 +++- 28 files changed, 289 insertions(+), 352 deletions(-) base-commit: 351f4911a477ae01239c42f771f621d85b06ea10 -- 2.17.1 ^ permalink raw reply [flat|nested] 14+ messages in thread
* [PATCH v4 06/11] thermal: Add mode helpers 2020-05-28 19:20 ` [PATCH v4 00/11] Stop monitoring disabled devices Andrzej Pietrasiewicz 2020-05-28 19:20 ` Andrzej Pietrasiewicz @ 2020-05-28 19:20 ` Andrzej Pietrasiewicz 0 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-05-28 19:20 UTC (permalink / raw) To: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip Cc: Rafael J . Wysocki, Len Brown, Vishal Kulkarni, David S . Miller, Jiri Pirko, Ido Schimmel, Johannes Berg, Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless, Kalle Valo, Peter Kaestle, Darren Hart, Andy Shevchenko, Sebastian Reichel, Miquel Raynal, Daniel Lezcano, Amit Kucheria, Support Opensource, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team, Niklas Söderlund, Heiko Stuebner, Orson Zhai, Baolin Wang, Chunyan Zhang, Zhang Rui, Allison Randal, Enrico Weigelt, Gayatri Kammela, Thomas Gleixner, Bartlomiej Zolnierkiewicz, Andrzej Pietrasiewicz, kernel Prepare for making the drivers not access tzd's private members. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> --- drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ include/linux/thermal.h | 13 +++++++++ 2 files changed, 66 insertions(+) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 14d3b1b94c4f..f2a5c5ee3455 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) thermal_zone_device_init(tz); } +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, + enum thermal_device_mode mode) +{ + int ret = 0; + + mutex_lock(&tz->lock); + + /* do nothing if mode isn't changing */ + if (mode == tz->mode) { + mutex_unlock(&tz->lock); + + return ret; + } + + if (tz->ops->set_mode) + ret = tz->ops->set_mode(tz, mode); + + if (!ret) + tz->mode = mode; + + mutex_unlock(&tz->lock); + + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); + + return ret; +} + +int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); +} +EXPORT_SYMBOL(thermal_zone_device_enable); + +int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); +} +EXPORT_SYMBOL(thermal_zone_device_disable); + +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ + enum thermal_device_mode mode; + + mutex_lock(&tz->lock); + + mode = tz->mode; + + mutex_unlock(&tz->lock); + + return mode == THERMAL_DEVICE_ENABLED; +} +EXPORT_SYMBOL(thermal_zone_device_is_enabled); + void thermal_zone_device_update(struct thermal_zone_device *tz, enum thermal_notify_event event) { diff --git a/include/linux/thermal.h b/include/linux/thermal.h index a808f6fa2777..df013c39ba9b 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); void thermal_cdev_update(struct thermal_cooling_device *); void thermal_notify_framework(struct thermal_zone_device *, int); +int thermal_zone_device_enable(struct thermal_zone_device *tz); +int thermal_zone_device_disable(struct thermal_zone_device *tz); +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); #else static inline struct thermal_zone_device *thermal_zone_device_register( const char *type, int trips, int mask, void *devdata, @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) static inline void thermal_notify_framework(struct thermal_zone_device *tz, int trip) { } + +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ return -ENODEV; } #endif /* CONFIG_THERMAL */ #endif /* __THERMAL_H__ */ -- 2.17.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 06/11] thermal: Add mode helpers @ 2020-05-28 19:20 ` Andrzej Pietrasiewicz 0 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-05-28 19:20 UTC (permalink / raw) To: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip Cc: Emmanuel Grumbach, Heiko Stuebner, Rafael J . Wysocki, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, Chunyan Zhang, Daniel Lezcano, Allison Randal, NXP Linux Team, Darren Hart, Zhang Rui, Gayatri Kammela, Len Brown, Johannes Berg, Intel Linux Wireless, Sascha Hauer, Ido Schimmel, Baolin Wang, Jiri Pirko, Orson Zhai, Thomas Gleixner, Kalle Valo, Support Opensource, Enrico Weigelt, Peter Kaestle, Sebastian Reichel, Andrzej Pietrasiewicz, Bartlomiej Zolnierkiewicz, Pengutronix Kernel Team, Niklas Söderlund, Shawn Guo, David S . Miller, Andy Shevchenko Prepare for making the drivers not access tzd's private members. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> --- drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ include/linux/thermal.h | 13 +++++++++ 2 files changed, 66 insertions(+) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 14d3b1b94c4f..f2a5c5ee3455 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) thermal_zone_device_init(tz); } +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, + enum thermal_device_mode mode) +{ + int ret = 0; + + mutex_lock(&tz->lock); + + /* do nothing if mode isn't changing */ + if (mode == tz->mode) { + mutex_unlock(&tz->lock); + + return ret; + } + + if (tz->ops->set_mode) + ret = tz->ops->set_mode(tz, mode); + + if (!ret) + tz->mode = mode; + + mutex_unlock(&tz->lock); + + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); + + return ret; +} + +int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); +} +EXPORT_SYMBOL(thermal_zone_device_enable); + +int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); +} +EXPORT_SYMBOL(thermal_zone_device_disable); + +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ + enum thermal_device_mode mode; + + mutex_lock(&tz->lock); + + mode = tz->mode; + + mutex_unlock(&tz->lock); + + return mode == THERMAL_DEVICE_ENABLED; +} +EXPORT_SYMBOL(thermal_zone_device_is_enabled); + void thermal_zone_device_update(struct thermal_zone_device *tz, enum thermal_notify_event event) { diff --git a/include/linux/thermal.h b/include/linux/thermal.h index a808f6fa2777..df013c39ba9b 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); void thermal_cdev_update(struct thermal_cooling_device *); void thermal_notify_framework(struct thermal_zone_device *, int); +int thermal_zone_device_enable(struct thermal_zone_device *tz); +int thermal_zone_device_disable(struct thermal_zone_device *tz); +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); #else static inline struct thermal_zone_device *thermal_zone_device_register( const char *type, int trips, int mask, void *devdata, @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) static inline void thermal_notify_framework(struct thermal_zone_device *tz, int trip) { } + +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ return -ENODEV; } #endif /* CONFIG_THERMAL */ #endif /* __THERMAL_H__ */ -- 2.17.1 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply related [flat|nested] 14+ messages in thread
* [PATCH v4 06/11] thermal: Add mode helpers @ 2020-05-28 19:20 ` Andrzej Pietrasiewicz 0 siblings, 0 replies; 14+ messages in thread From: Andrzej Pietrasiewicz @ 2020-05-28 19:20 UTC (permalink / raw) To: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip Cc: Rafael J . Wysocki, Len Brown, Vishal Kulkarni, David S . Miller, Jiri Pirko, Ido Schimmel, Johannes Berg, Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless, Kalle Valo, Peter Kaestle, Darren Hart, Andy Shevchenko, Sebastian Reichel, Miquel Raynal, Daniel Lezcano, Amit Kucheria, Support Opensource Prepare for making the drivers not access tzd's private members. Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> --- drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ include/linux/thermal.h | 13 +++++++++ 2 files changed, 66 insertions(+) diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c index 14d3b1b94c4f..f2a5c5ee3455 100644 --- a/drivers/thermal/thermal_core.c +++ b/drivers/thermal/thermal_core.c @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) thermal_zone_device_init(tz); } +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, + enum thermal_device_mode mode) +{ + int ret = 0; + + mutex_lock(&tz->lock); + + /* do nothing if mode isn't changing */ + if (mode == tz->mode) { + mutex_unlock(&tz->lock); + + return ret; + } + + if (tz->ops->set_mode) + ret = tz->ops->set_mode(tz, mode); + + if (!ret) + tz->mode = mode; + + mutex_unlock(&tz->lock); + + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); + + return ret; +} + +int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); +} +EXPORT_SYMBOL(thermal_zone_device_enable); + +int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); +} +EXPORT_SYMBOL(thermal_zone_device_disable); + +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ + enum thermal_device_mode mode; + + mutex_lock(&tz->lock); + + mode = tz->mode; + + mutex_unlock(&tz->lock); + + return mode == THERMAL_DEVICE_ENABLED; +} +EXPORT_SYMBOL(thermal_zone_device_is_enabled); + void thermal_zone_device_update(struct thermal_zone_device *tz, enum thermal_notify_event event) { diff --git a/include/linux/thermal.h b/include/linux/thermal.h index a808f6fa2777..df013c39ba9b 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); void thermal_cdev_update(struct thermal_cooling_device *); void thermal_notify_framework(struct thermal_zone_device *, int); +int thermal_zone_device_enable(struct thermal_zone_device *tz); +int thermal_zone_device_disable(struct thermal_zone_device *tz); +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); #else static inline struct thermal_zone_device *thermal_zone_device_register( const char *type, int trips, int mask, void *devdata, @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) static inline void thermal_notify_framework(struct thermal_zone_device *tz, int trip) { } + +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) +{ return -ENODEV; } + +static inline int +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) +{ return -ENODEV; } #endif /* CONFIG_THERMAL */ #endif /* __THERMAL_H__ */ -- 2.17.1 ^ permalink raw reply related [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers 2020-05-28 19:20 ` Andrzej Pietrasiewicz (?) @ 2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz -1 siblings, 0 replies; 14+ messages in thread From: Bartlomiej Zolnierkiewicz @ 2020-06-24 9:49 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Rafael J . Wysocki, Len Brown, Vishal Kulkarni, David S . Miller, Jiri Pirko, Ido Schimmel, Johannes Berg, Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless, Kalle Valo, Peter Kaestle, Darren Hart, Andy Shevchenko, Sebastian Reichel, Miquel Raynal, Daniel Lezcano, Amit Kucheria, Support Opensource, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team, Fabio Estevam, NXP Linux Team, Niklas Söderlund, Heiko Stuebner, Orson Zhai, Baolin Wang, Chunyan Zhang, Zhang Rui, Allison Randal, Enrico Weigelt, Gayatri Kammela, Thomas Gleixner, kernel On 5/28/20 9:20 PM, Andrzej Pietrasiewicz wrote: > Prepare for making the drivers not access tzd's private members. > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 13 +++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 14d3b1b94c4f..f2a5c5ee3455 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) > thermal_zone_device_init(tz); > } > > +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, > + enum thermal_device_mode mode) > +{ > + int ret = 0; > + > + mutex_lock(&tz->lock); > + > + /* do nothing if mode isn't changing */ > + if (mode == tz->mode) { > + mutex_unlock(&tz->lock); > + > + return ret; > + } > + > + if (tz->ops->set_mode) > + ret = tz->ops->set_mode(tz, mode); > + > + if (!ret) > + tz->mode = mode; > + > + mutex_unlock(&tz->lock); > + > + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); > + > + return ret; > +} > + > +int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_enable); > + > +int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_disable); > + > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ > + enum thermal_device_mode mode; > + > + mutex_lock(&tz->lock); > + > + mode = tz->mode; > + > + mutex_unlock(&tz->lock); > + > + return mode == THERMAL_DEVICE_ENABLED; > +} > +EXPORT_SYMBOL(thermal_zone_device_is_enabled); > + > void thermal_zone_device_update(struct thermal_zone_device *tz, > enum thermal_notify_event event) > { > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index a808f6fa2777..df013c39ba9b 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); > > void thermal_cdev_update(struct thermal_cooling_device *); > void thermal_notify_framework(struct thermal_zone_device *, int); > +int thermal_zone_device_enable(struct thermal_zone_device *tz); > +int thermal_zone_device_disable(struct thermal_zone_device *tz); > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); > #else > static inline struct thermal_zone_device *thermal_zone_device_register( > const char *type, int trips, int mask, void *devdata, > @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) > static inline void thermal_notify_framework(struct thermal_zone_device *tz, > int trip) > { } > + > +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int > +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ return -ENODEV; } > #endif /* CONFIG_THERMAL */ > > #endif /* __THERMAL_H__ */ > ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz 0 siblings, 0 replies; 14+ messages in thread From: Bartlomiej Zolnierkiewicz @ 2020-06-24 9:49 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-wireless, Emmanuel Grumbach, Heiko Stuebner, Peter Kaestle, platform-driver-x86, Vishal Kulkarni, Luca Coelho, Miquel Raynal, kernel, Fabio Estevam, Amit Kucheria, linux-rockchip, Chunyan Zhang, Intel Linux Wireless, Allison Randal, NXP Linux Team, linux-acpi, linux-arm-kernel, Darren Hart, Zhang Rui, Gayatri Kammela, Len Brown, Johannes Berg, linux-pm, Sascha Hauer, Ido Schimmel, Baolin Wang, Jiri Pirko, Orson Zhai, Thomas Gleixner, Kalle Valo, Support Opensource, Enrico Weigelt, Daniel Lezcano, netdev, Rafael J . Wysocki, Sebastian Reichel, linux-renesas-soc, Pengutronix Kernel Team, Niklas Söderlund, Shawn Guo, David S . Miller, Andy Shevchenko On 5/28/20 9:20 PM, Andrzej Pietrasiewicz wrote: > Prepare for making the drivers not access tzd's private members. > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 13 +++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 14d3b1b94c4f..f2a5c5ee3455 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) > thermal_zone_device_init(tz); > } > > +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, > + enum thermal_device_mode mode) > +{ > + int ret = 0; > + > + mutex_lock(&tz->lock); > + > + /* do nothing if mode isn't changing */ > + if (mode == tz->mode) { > + mutex_unlock(&tz->lock); > + > + return ret; > + } > + > + if (tz->ops->set_mode) > + ret = tz->ops->set_mode(tz, mode); > + > + if (!ret) > + tz->mode = mode; > + > + mutex_unlock(&tz->lock); > + > + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); > + > + return ret; > +} > + > +int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_enable); > + > +int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_disable); > + > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ > + enum thermal_device_mode mode; > + > + mutex_lock(&tz->lock); > + > + mode = tz->mode; > + > + mutex_unlock(&tz->lock); > + > + return mode == THERMAL_DEVICE_ENABLED; > +} > +EXPORT_SYMBOL(thermal_zone_device_is_enabled); > + > void thermal_zone_device_update(struct thermal_zone_device *tz, > enum thermal_notify_event event) > { > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index a808f6fa2777..df013c39ba9b 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); > > void thermal_cdev_update(struct thermal_cooling_device *); > void thermal_notify_framework(struct thermal_zone_device *, int); > +int thermal_zone_device_enable(struct thermal_zone_device *tz); > +int thermal_zone_device_disable(struct thermal_zone_device *tz); > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); > #else > static inline struct thermal_zone_device *thermal_zone_device_register( > const char *type, int trips, int mask, void *devdata, > @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) > static inline void thermal_notify_framework(struct thermal_zone_device *tz, > int trip) > { } > + > +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int > +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ return -ENODEV; } > #endif /* CONFIG_THERMAL */ > > #endif /* __THERMAL_H__ */ > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [PATCH v4 06/11] thermal: Add mode helpers @ 2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz 0 siblings, 0 replies; 14+ messages in thread From: Bartlomiej Zolnierkiewicz @ 2020-06-24 9:49 UTC (permalink / raw) To: Andrzej Pietrasiewicz Cc: linux-pm, linux-acpi, netdev, linux-wireless, platform-driver-x86, linux-arm-kernel, linux-renesas-soc, linux-rockchip, Rafael J . Wysocki, Len Brown, Vishal Kulkarni, David S . Miller, Jiri Pirko, Ido Schimmel, Johannes Berg, Emmanuel Grumbach, Luca Coelho, Intel Linux Wireless, Kalle Valo, Peter Kaestle, Darren Hart On 5/28/20 9:20 PM, Andrzej Pietrasiewicz wrote: > Prepare for making the drivers not access tzd's private members. > > Signed-off-by: Andrzej Pietrasiewicz <andrzej.p@collabora.com> Reviewed-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com> Best regards, -- Bartlomiej Zolnierkiewicz Samsung R&D Institute Poland Samsung Electronics > --- > drivers/thermal/thermal_core.c | 53 ++++++++++++++++++++++++++++++++++ > include/linux/thermal.h | 13 +++++++++ > 2 files changed, 66 insertions(+) > > diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c > index 14d3b1b94c4f..f2a5c5ee3455 100644 > --- a/drivers/thermal/thermal_core.c > +++ b/drivers/thermal/thermal_core.c > @@ -459,6 +459,59 @@ static void thermal_zone_device_reset(struct thermal_zone_device *tz) > thermal_zone_device_init(tz); > } > > +int thermal_zone_device_set_mode(struct thermal_zone_device *tz, > + enum thermal_device_mode mode) > +{ > + int ret = 0; > + > + mutex_lock(&tz->lock); > + > + /* do nothing if mode isn't changing */ > + if (mode == tz->mode) { > + mutex_unlock(&tz->lock); > + > + return ret; > + } > + > + if (tz->ops->set_mode) > + ret = tz->ops->set_mode(tz, mode); > + > + if (!ret) > + tz->mode = mode; > + > + mutex_unlock(&tz->lock); > + > + thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED); > + > + return ret; > +} > + > +int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_ENABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_enable); > + > +int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ > + return thermal_zone_device_set_mode(tz, THERMAL_DEVICE_DISABLED); > +} > +EXPORT_SYMBOL(thermal_zone_device_disable); > + > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ > + enum thermal_device_mode mode; > + > + mutex_lock(&tz->lock); > + > + mode = tz->mode; > + > + mutex_unlock(&tz->lock); > + > + return mode == THERMAL_DEVICE_ENABLED; > +} > +EXPORT_SYMBOL(thermal_zone_device_is_enabled); > + > void thermal_zone_device_update(struct thermal_zone_device *tz, > enum thermal_notify_event event) > { > diff --git a/include/linux/thermal.h b/include/linux/thermal.h > index a808f6fa2777..df013c39ba9b 100644 > --- a/include/linux/thermal.h > +++ b/include/linux/thermal.h > @@ -416,6 +416,9 @@ int thermal_zone_get_offset(struct thermal_zone_device *tz); > > void thermal_cdev_update(struct thermal_cooling_device *); > void thermal_notify_framework(struct thermal_zone_device *, int); > +int thermal_zone_device_enable(struct thermal_zone_device *tz); > +int thermal_zone_device_disable(struct thermal_zone_device *tz); > +int thermal_zone_device_is_enabled(struct thermal_zone_device *tz); > #else > static inline struct thermal_zone_device *thermal_zone_device_register( > const char *type, int trips, int mask, void *devdata, > @@ -463,6 +466,16 @@ static inline void thermal_cdev_update(struct thermal_cooling_device *cdev) > static inline void thermal_notify_framework(struct thermal_zone_device *tz, > int trip) > { } > + > +static inline int thermal_zone_device_enable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int thermal_zone_device_disable(struct thermal_zone_device *tz) > +{ return -ENODEV; } > + > +static inline int > +thermal_zone_device_is_enabled(struct thermal_zone_device *tz) > +{ return -ENODEV; } > #endif /* CONFIG_THERMAL */ > > #endif /* __THERMAL_H__ */ > ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2020-06-24 9:51 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-05-29 15:52 [PATCH v4 06/11] thermal: Add mode helpers Guenter Roeck
2020-05-29 15:52 ` Guenter Roeck
2020-06-01 11:16 ` Andrzej Pietrasiewicz
2020-06-01 11:16 ` Andrzej Pietrasiewicz
2020-06-01 11:16 ` Andrzej Pietrasiewicz
2020-06-01 13:40 ` Guenter Roeck
2020-06-01 13:40 ` Guenter Roeck
2020-06-01 13:40 ` Guenter Roeck
[not found] <Message-ID: <4493c0e4-51aa-3907-810c-74949ff27ca4@samsung.com>
2020-05-28 19:20 ` [PATCH v4 00/11] Stop monitoring disabled devices Andrzej Pietrasiewicz
2020-05-28 19:20 ` [PATCH v4 06/11] thermal: Add mode helpers Andrzej Pietrasiewicz
2020-05-28 19:20 ` Andrzej Pietrasiewicz
2020-05-28 19:20 ` Andrzej Pietrasiewicz
2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz
2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz
2020-06-24 9:49 ` Bartlomiej Zolnierkiewicz
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.