All of lore.kernel.org
 help / color / mirror / Atom feed
From: Durgadoss R <durgadoss.r@intel.com>
To: lenb@kernel.org, rui.zhang@intel.com
Cc: linux-acpi@vger.kernel.org, eduardo.valentin@ti.com,
	Durgadoss R <durgadoss.r@intel.com>
Subject: [PATCHv2 03/14] Thermal: Add get trend, get instance API's to thermal_sys
Date: Mon, 27 Aug 2012 09:58:15 +0530	[thread overview]
Message-ID: <1346041706-29642-4-git-send-email-durgadoss.r@intel.com> (raw)
In-Reply-To: <1346041706-29642-1-git-send-email-durgadoss.r@intel.com>

This patch adds the following API's to thermal_sys.c, that
can be used by other Thermal drivers.
 * get_tz_trend: obtain the trend of the given thermal zone
 * get_thermal_instance: obtain the instance corresponding
   to the given tz, cdev and the trip point.

Signed-off-by: Durgadoss R <durgadoss.r@intel.com>
---
 drivers/thermal/thermal_sys.c |   40 ++++++++++++++++++++++++++++++++++++++++
 include/linux/thermal.h       |    4 ++++
 2 files changed, 44 insertions(+)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 0e71b00..5e141b5 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -82,6 +82,46 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id)
 		mutex_unlock(lock);
 }
 
+int get_tz_trend(struct thermal_zone_device *tz, int trip)
+{
+	enum thermal_trend trend;
+
+	if (!tz->ops->get_trend || tz->ops->get_trend(tz, trip, &trend)) {
+		if (tz->temperature > tz->last_temperature)
+			trend = THERMAL_TREND_RAISING;
+		else if (tz->temperature < tz->last_temperature)
+			trend = THERMAL_TREND_DROPPING;
+		else
+			trend = THERMAL_TREND_STABLE;
+	}
+
+	return trend;
+}
+EXPORT_SYMBOL(get_tz_trend);
+
+struct thermal_instance *get_thermal_instance(struct thermal_zone_device *tz,
+			struct thermal_cooling_device *cdev, int trip)
+{
+	struct thermal_instance *pos = NULL;
+	struct thermal_instance *target_instance = NULL;
+
+	mutex_lock(&tz->lock);
+	mutex_lock(&cdev->lock);
+
+	list_for_each_entry(pos, &tz->thermal_instances, tz_node) {
+		if (pos->tz == tz && pos->trip == trip && pos->cdev == cdev) {
+			target_instance = pos;
+			break;
+		}
+	}
+
+	mutex_unlock(&cdev->lock);
+	mutex_unlock(&tz->lock);
+
+	return target_instance;
+}
+EXPORT_SYMBOL(get_thermal_instance);
+
 /* sys I/F for thermal zone */
 
 #define to_thermal_zone(_dev) \
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 8611e3e..32af124 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -185,6 +185,10 @@ struct thermal_cooling_device *thermal_cooling_device_register(char *, void *,
 		const struct thermal_cooling_device_ops *);
 void thermal_cooling_device_unregister(struct thermal_cooling_device *);
 
+int get_tz_trend(struct thermal_zone_device *, int);
+struct thermal_instance *get_thermal_instance(struct thermal_zone_device *,
+		struct thermal_cooling_device *, int);
+
 #ifdef CONFIG_NET
 extern int thermal_generate_netlink_event(u32 orig, enum events event);
 #else
-- 
1.7.9.5


  parent reply	other threads:[~2012-08-27  4:29 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-27  4:28 [PATCHv2 00/14] Thermal Framework Enhancements Durgadoss R
2012-08-27  4:28 ` [PATCHv2 01/14] Thermal: Refactor thermal.h file Durgadoss R
2012-08-27  4:28 ` [PATCHv2 02/14] Thermal: Move thermal_instance to thermal_core.h Durgadoss R
2012-08-27  4:28 ` Durgadoss R [this message]
2012-08-27  8:11   ` [PATCHv2 03/14] Thermal: Add get trend, get instance API's to thermal_sys Zhang, Rui
2012-08-27  8:47     ` R, Durgadoss
2012-08-27  9:19       ` Zhang, Rui
2012-08-27  9:24         ` R, Durgadoss
2012-08-27  4:28 ` [PATCHv2 04/14] Thermal: Add platform level information to thermal.h Durgadoss R
2012-08-27  8:27   ` Zhang, Rui
2012-08-27  8:57     ` R, Durgadoss
2012-08-27  9:22       ` Zhang, Rui
2012-08-27  9:25         ` R, Durgadoss
2012-08-27  4:28 ` [PATCHv2 05/14] Thermal: Obtain platform data for thermal zone Durgadoss R
2012-08-27  8:29   ` Zhang, Rui
2012-08-27  8:59     ` R, Durgadoss
2012-08-27  4:28 ` [PATCHv2 06/14] Thermal: Add a policy sysfs attribute Durgadoss R
2012-08-27  8:31   ` Zhang, Rui
2012-08-27  9:02     ` R, Durgadoss
2012-08-27  9:25       ` Zhang, Rui
2012-08-27 10:23         ` R, Durgadoss
2012-08-27 10:44           ` Zhang, Rui
2012-08-27  9:35   ` Zhang, Rui
2012-08-27 10:25     ` R, Durgadoss
2012-08-27  4:28 ` [PATCHv2 07/14] Thermal: Update binding logic based on platform data Durgadoss R
2012-08-27  9:50   ` Zhang, Rui
2012-08-27 10:29     ` R, Durgadoss
2012-08-27  4:28 ` [PATCHv2 08/14] Thermal: Make thermal_cdev_update as a global function Durgadoss R
2012-08-27  4:28 ` [PATCHv2 09/14] Thermal: Introduce fair_share thermal governor Durgadoss R
2012-08-27  4:28 ` [PATCHv2 10/14] Thermal: Introduce a step_wise " Durgadoss R
2012-08-27  4:28 ` [PATCHv2 11/14] Thermal: Remove throttling logic out of thermal_sys.c Durgadoss R
2012-08-27  4:28 ` [PATCHv2 12/14] Thermal: Add a notification API Durgadoss R
2012-08-27  4:28 ` [PATCHv2 13/14] Thermal: Add documentation for platform layer data Durgadoss R
2012-08-27  4:28 ` [PATCHv2 14/14] Thermal: Platform layer changes to provide thermal data Durgadoss R

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=1346041706-29642-4-git-send-email-durgadoss.r@intel.com \
    --to=durgadoss.r@intel.com \
    --cc=eduardo.valentin@ti.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=rui.zhang@intel.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 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.