From: Javi Merino <javi.merino@arm.com>
To: Caesar Wang <caesar.upstream@gmail.com>
Cc: Caesar Wang <wxt@rock-chips.com>,
huangtao@rock-chips.com, Jonathan Corbet <corbet@lwn.net>,
Ni Wade <wni@nvidia.com>, Durgadoss R <durgadoss.r@intel.com>,
Heiko Stuebner <heiko@sntech.de>,
linux-pm@vger.kernel.org, Sascha Hauer <s.hauer@pengutronix.de>,
dmitry.torokhov@gmail.com, linux-doc@vger.kernel.org,
dianders@chromium.org, linux-kernel@vger.kernel.org,
edubezval@gmail.com, linux-rockchip@lists.infradead.org,
Laxman Dewangan <ldewangan@nvidia.com>,
smbarber@google.com, Leo Yan <leo.yan@linaro.org>,
cf@rock-chips.com, briannorris@google.com,
Zhang Rui <rui.zhang@intel.com>, Andy Champ <andycham@amazon.com>
Subject: Re: [PATCH v2 1/5] thermal: Add support for hardware-tracked trip points
Date: Wed, 25 May 2016 17:44:21 +0100 [thread overview]
Message-ID: <20160525164420.GB11807@e104805> (raw)
In-Reply-To: <57451B9C.7070705@gmail.com>
Hi Caesar,
On Wed, May 25, 2016 at 11:27:24AM +0800, Caesar Wang wrote:
> On 2016年05月24日 20:57, Javi Merino wrote:
> >On Tue, May 03, 2016 at 05:33:29PM +0800, Caesar Wang wrote:
> >>From: Sascha Hauer <s.hauer@pengutronix.de>
> >>
> >>This adds support for hardware-tracked trip points to the device tree
> >>thermal sensor framework.
> >>
> >>The framework supports an arbitrary number of trip points. Whenever
> >>the current temperature is updated, the trip points immediately
> >>below and above the current temperature are found. A .set_trips
> >>callback is then called with the temperatures. If there is no trip
> >>point above or below the current temperature, the passed trip
> >>temperature will be -INT_MAX or INT_MAX respectively. In this callback,
> >>the driver should program the hardware such that it is notified
> >>when either of these trip points are triggered. When a trip point
> >>is triggered, the driver should call `thermal_zone_device_update'
> >>for the respective thermal zone. This will cause the trip points
> >>to be updated again.
> >>
> >>If .set_trips is not implemented, the framework behaves as before.
> >>
> >>This patch is based on an earlier version from Mikko Perttunen
> >><mikko.perttunen@kapsi.fi>
> >>
> >>Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
> >>Signed-off-by: Caesar Wang <wxt@rock-chips.com>
> >>Cc: Zhang Rui <rui.zhang@intel.com>
> >>Cc: Eduardo Valentin <edubezval@gmail.com>
> >>Cc: linux-pm@vger.kernel.org
> >>
> >>---
> >>
> >>Changes in v2:
> >>- update the sysfs-api.txt for set_trips
> >>
> >> Documentation/thermal/sysfs-api.txt | 7 +++++
> >> drivers/thermal/thermal_core.c | 52 +++++++++++++++++++++++++++++++++++++
> >> include/linux/thermal.h | 3 +++
> >> 3 files changed, 62 insertions(+)
> <cut..>
> >>+ /*
> >>+ * Set a temperature window. When this window is left the driver
> >>+ * must inform the thermal core via thermal_zone_device_update.
> >>+ */
> >>+ ret = tz->ops->set_trips(tz, low, high);
> >>+ if (ret)
> >>+ dev_err(&tz->device, "Failed to set trips: %d\n", ret);
> >This function can be called at the same time from multiple places so
> >it should be reentrant. I think you should call mutex_lock(tz->lock)
> >before "if (tz->prev_low_trip == low && ..." and unlock it here.
>
> Sound reasonable, fixes it in next version.
>
> >>+}
> >>+
> >> static void update_temperature(struct thermal_zone_device *tz)
> >> {
> >> int temp, ret;
> >>@@ -569,6 +614,8 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
> >> update_temperature(tz);
> >>+ thermal_zone_set_trips(tz);
> >>+
> >> for (count = 0; count < tz->trips; count++)
> >> handle_thermal_trip(tz, count);
> >> }
> >>@@ -754,6 +801,9 @@ trip_point_hyst_store(struct device *dev, struct device_attribute *attr,
> >> */
> >> ret = tz->ops->set_trip_hyst(tz, trip, temperature);
> >>+ if (!ret)
> >>+ thermal_zone_set_trips(tz);
> >>+
> >You should add a similar call to thermal_zone_set_trips() in trip_point_temp_store()
>
> No, this patch has been done.
>
> if you see the linux next kernel.
> 72f3ada UPSTREAM: thermal: trip_point_temp_store() calls
> thermal_zone_device_update()
>
> --- a/drivers/thermal/thermal_core.c
> +++ b/drivers/thermal/thermal_core.c
> @@ -733,8 +733,12 @@ trip_point_temp_store(struct device *dev,
> struct device_attribute *attr,
> return -EINVAL;
>
> ret = tz->ops->set_trip_temp(tz, trip, temperature);
> + if (ret)
> + return ret;
>
> - return ret ? ret : count;
> + thermal_zone_device_update(tz);
> +
> + return count;
> }
>
> So the "thermal_zone_set_trips(tz)" have been set in
> thermal_zone_device_update.
Ah, right, I missed that. Thanks!
Javi
next prev parent reply other threads:[~2016-05-25 16:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-03 9:33 [PATCH v2 0/5] Thermal: Support for hardware-tracked trip points Caesar Wang
[not found] ` <1462268013-14992-1-git-send-email-wxt-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-05-03 9:33 ` [PATCH v2 1/5] thermal: Add support " Caesar Wang
2016-05-24 12:57 ` Javi Merino
2016-05-25 3:27 ` Caesar Wang
2016-05-25 16:44 ` Javi Merino [this message]
2016-05-03 9:33 ` [PATCH v2 2/5] thermal: of: implement .set_trips for device tree thermal zones Caesar Wang
2016-05-24 13:01 ` Javi Merino
2016-05-25 3:28 ` Caesar Wang
2016-05-03 9:33 ` [PATCH v2 3/5] thermal: streamline get_trend callbacks Caesar Wang
2016-05-03 9:33 ` [PATCH v2 4/5] thermal: bang-bang governor: act on lower trip boundary Caesar Wang
2016-05-24 13:06 ` Javi Merino
2016-05-24 13:11 ` Peter Feuerer
2016-05-24 17:34 ` Peter Feuerer
[not found] ` <a942e788aa285dcf88db38c6d03a36ce-wZNyVc2rXxoqcZcGjlUOXw@public.gmane.org>
2016-05-25 3:30 ` Caesar Wang
2016-05-03 9:33 ` [PATCH v2 5/5] thermal: rockchip: add the set_trips function Caesar Wang
2016-05-23 7:32 ` [PATCH v2 0/5] Thermal: Support for hardware-tracked trip points Caesar Wang
2016-05-24 3:08 ` Eduardo Valentin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160525164420.GB11807@e104805 \
--to=javi.merino@arm.com \
--cc=andycham@amazon.com \
--cc=briannorris@google.com \
--cc=caesar.upstream@gmail.com \
--cc=cf@rock-chips.com \
--cc=corbet@lwn.net \
--cc=dianders@chromium.org \
--cc=dmitry.torokhov@gmail.com \
--cc=durgadoss.r@intel.com \
--cc=edubezval@gmail.com \
--cc=heiko@sntech.de \
--cc=huangtao@rock-chips.com \
--cc=ldewangan@nvidia.com \
--cc=leo.yan@linaro.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=rui.zhang@intel.com \
--cc=s.hauer@pengutronix.de \
--cc=smbarber@google.com \
--cc=wni@nvidia.com \
--cc=wxt@rock-chips.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox