From: Zhang Rui <rui.zhang@intel.com>
To: linux-acpi@vger.kernel.org, linux-pm@vger.kernel.org
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>,
Matthew Garrett <mjg@redhat.com>, Len Brown <lenb@kernel.org>,
R Durgadoss <durgadoss.r@intel.com>,
Eduardo Valentin <eduardo.valentin@intel.com>,
Amit Kachhap <amit.kachhap@linaro.org>, Wei Ni <wni@nvidia.com>,
Zhang Rui <rui.zhang@intel.com>
Subject: [PATCH 05/16] Thermal: Introduce cooling states range support
Date: Thu, 19 Jul 2012 14:31:09 +0800 [thread overview]
Message-ID: <1342679480-5336-6-git-send-email-rui.zhang@intel.com> (raw)
In-Reply-To: <1342679480-5336-1-git-send-email-rui.zhang@intel.com>
As the active cooling devices can have multiple cooling states,
we may want only several cooling states for a certain trip point,
and other cooling states for other active trip points.
To do this, we should be able to describe the cooling device
behavior for a certain trip point, rather than for the entire thermal zone.
And when updating thermal zone, we need to check the upper and lower limit
to make sure the cooling device is set to the proper cooling state.
Note that this patch will not bring any different behavior as
upper limit is set to max_state and lower limit is set to 0
in this patch, for now.
Next patch will set these to real values.
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
drivers/thermal/thermal_sys.c | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 63927e3..4267a49 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -41,12 +41,19 @@ MODULE_AUTHOR("Zhang Rui");
MODULE_DESCRIPTION("Generic thermal management sysfs support");
MODULE_LICENSE("GPL");
+/*
+ * This structure is used to describe the behavior of
+ * a certain cooling device on a certain trip point
+ * in a certain thermal zone
+ */
struct thermal_cooling_device_instance {
int id;
char name[THERMAL_NAME_LENGTH];
struct thermal_zone_device *tz;
struct thermal_cooling_device *cdev;
int trip;
+ unsigned long upper; /* Highest cooling state for this trip point */
+ unsigned long lower; /* Lowest cooling state for this trip point */
char attr_name[THERMAL_NAME_LENGTH];
struct device_attribute attr;
struct list_head node;
@@ -800,6 +807,7 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
struct thermal_cooling_device_instance *pos;
struct thermal_zone_device *pos1;
struct thermal_cooling_device *pos2;
+ unsigned long max_state;
int result;
if (trip >= tz->trips || (trip < 0 && trip != THERMAL_TRIPS_NONE))
@@ -824,6 +832,11 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *tz,
dev->tz = tz;
dev->cdev = cdev;
dev->trip = trip;
+
+ cdev->ops->get_max_state(dev, &max_state);
+ dev->upper = max_state;
+ dev->lower = 0;
+
result = get_idr(&tz->idr, &tz->lock, &dev->id);
if (result)
goto free_mem;
@@ -1103,11 +1116,15 @@ void thermal_zone_device_update(struct thermal_zone_device *tz)
cdev->ops->get_max_state(cdev, &max_state);
if (temp >= trip_temp)
- cur_state = cur_state < max_state ?
- (cur_state + 1) : max_state;
+ cur_state =
+ cur_state < instance->upper ?
+ (cur_state + 1) :
+ instance->upper;
else
- cur_state = cur_state > 0 ?
- (cur_state - 1) : 0;
+ cur_state =
+ cur_state > instance->lower ?
+ (cur_state - 1) :
+ instance->lower;
cdev->ops->set_cur_state(cdev, cur_state);
}
--
1.7.9.5
next prev parent reply other threads:[~2012-07-19 6:31 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-07-19 6:31 [PATCH 00/16] Thermal: generic thermal layer enhancement Zhang Rui
2012-07-19 6:31 ` [PATCH 01/16] Thermal: Make Thermal trip points writeable Zhang Rui
2012-07-19 10:35 ` R, Durgadoss
2012-07-19 19:38 ` Rafael J. Wysocki
2012-07-23 8:11 ` Zhang Rui
2012-07-19 20:27 ` Rafael J. Wysocki
2012-07-23 8:22 ` Zhang Rui
2012-07-23 10:25 ` Rafael J. Wysocki
2012-07-19 6:31 ` [PATCH 02/16] Thermal: Add Hysteresis attributes Zhang Rui
2012-07-19 10:40 ` R, Durgadoss
2012-07-19 20:00 ` Rafael J. Wysocki
2012-07-19 6:31 ` [PATCH 03/16] Thermal: Documentation update Zhang Rui
2012-07-19 10:51 ` R, Durgadoss
2012-07-23 8:36 ` Zhang Rui
2012-07-19 6:31 ` [PATCH 04/16] Thermal: Introduce multiple cooling states support Zhang Rui
2012-07-19 6:31 ` Zhang Rui [this message]
2012-07-19 6:31 ` [PATCH 06/16] Thermal: set upper and lower limits Zhang Rui
2012-07-19 20:55 ` Rafael J. Wysocki
2012-07-23 8:45 ` Zhang Rui
2012-07-23 19:15 ` Rafael J. Wysocki
2012-07-19 6:31 ` [PATCH 07/16] Thermal: Introduce .get_trend() callback Zhang Rui
2012-07-19 21:13 ` Rafael J. Wysocki
2012-07-24 1:42 ` Zhang Rui
2012-07-24 9:22 ` Rafael J. Wysocki
2012-07-19 22:09 ` Jacob Pan
2012-07-20 9:53 ` Rafael J. Wysocki
2012-07-20 16:12 ` Jacob Pan
2012-07-19 6:31 ` [PATCH 08/16] Thermal: Remove tc1/tc2 in generic thermal layer Zhang Rui
2012-07-19 6:31 ` [PATCH 09/16] Thermal: Introduce thermal_zone_trip_update() Zhang Rui
2012-07-19 21:19 ` Rafael J. Wysocki
2012-07-24 1:47 ` Zhang Rui
2012-07-24 9:27 ` Rafael J. Wysocki
2012-07-25 1:38 ` Zhang Rui
2012-07-25 11:07 ` Rafael J. Wysocki
2012-07-26 0:49 ` Zhang Rui
[not found] ` <CAK44p21hNYGH4YkH5E+XK-pM2upingQbvm77WkJbttCRp6ZamQ@mail.gmail.com>
2012-07-24 7:11 ` Zhang Rui
2012-07-24 8:06 ` Amit Kachhap
2012-07-26 5:08 ` Zhang Rui
2012-07-26 6:01 ` R, Durgadoss
2012-07-24 7:57 ` Amit Kachhap
2012-07-19 6:31 ` [PATCH 10/16] Thermal: rename structure thermal_cooling_device_instance to thermal_instance Zhang Rui
2012-07-19 6:31 ` [PATCH 11/16] Thermal: Rename thermal_zone_device.cooling_devices to thermal_zone_device.instances Zhang Rui
2012-07-19 21:22 ` Rafael J. Wysocki
2012-07-24 1:48 ` Zhang Rui
2012-07-19 6:31 ` [PATCH 12/16] Thermal: Rename thermal_instance.node to thermal_instance.tz_node Zhang Rui
2012-07-19 6:31 ` [PATCH 13/16] Thermal: List thermal_instance in thermal_cooling_device Zhang Rui
2012-07-19 21:25 ` Rafael J. Wysocki
2012-07-24 1:48 ` Zhang Rui
2012-07-19 6:31 ` [PATCH 14/16] Thermal: Introduce simple arbitrator for setting device cooling state Zhang Rui
2012-07-19 21:39 ` Rafael J. Wysocki
2012-07-24 1:49 ` Zhang Rui
2012-07-19 6:31 ` [PATCH 15/16] Thermal: Unify the code for both active and passive cooling Zhang Rui
2012-07-19 6:31 ` [PATCH 16/16] Thermal: use plist instead of list Zhang Rui
2012-07-19 21:45 ` Rafael J. Wysocki
2012-07-24 2:13 ` Zhang Rui
2012-07-19 6:37 ` [PATCH 00/16] Thermal: generic thermal layer enhancement Zhang Rui
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=1342679480-5336-6-git-send-email-rui.zhang@intel.com \
--to=rui.zhang@intel.com \
--cc=amit.kachhap@linaro.org \
--cc=durgadoss.r@intel.com \
--cc=eduardo.valentin@intel.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=mjg@redhat.com \
--cc=rjw@sisk.pl \
--cc=wni@nvidia.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;
as well as URLs for NNTP newsgroup(s).