From: Eduardo Valentin <eduardo.valentin@ti.com>
To: swarren@wwwdotorg.org, pawel.moll@arm.com, mark.rutland@arm.com,
ian.campbell@citrix.com, rob.herring@calxeda.com,
linux@roeck-us.net, rui.zhang@intel.com
Cc: wni@nvidia.com, grant.likely@linaro.org, durgadoss.r@intel.com,
linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
lm-sensors@lm-sensors.org, linux-kernel@vger.kernel.org,
Eduardo Valentin <eduardo.valentin@ti.com>
Subject: [PATCHv5 03/20] thermal: core: introduce thermal_of_cooling_device_register
Date: Tue, 12 Nov 2013 15:46:05 -0400 [thread overview]
Message-ID: <1384285582-16933-4-git-send-email-eduardo.valentin@ti.com> (raw)
In-Reply-To: <1384285582-16933-1-git-send-email-eduardo.valentin@ti.com>
This patch adds a new API to allow registering cooling devices
in the thermal framework derived from device tree nodes.
This API links the cooling device with the device tree node
so that binding with thermal zones is possible, given
that thermal zones are pointing to cooling device
device tree nodes.
Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
---
drivers/thermal/thermal_core.c | 58 +++++++++++++++++++++++++++++++++++++++---
include/linux/thermal.h | 4 +++
2 files changed, 58 insertions(+), 4 deletions(-)
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index aba68dc..3092bfb 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -34,6 +34,7 @@
#include <linux/thermal.h>
#include <linux/reboot.h>
#include <linux/string.h>
+#include <linux/of.h>
#include <net/netlink.h>
#include <net/genetlink.h>
@@ -1055,7 +1056,8 @@ static struct class thermal_class = {
};
/**
- * thermal_cooling_device_register() - register a new thermal cooling device
+ * __thermal_cooling_device_register() - register a new thermal cooling device
+ * @np: a pointer to a device tree node.
* @type: the thermal cooling device type.
* @devdata: device private data.
* @ops: standard thermal cooling devices callbacks.
@@ -1063,13 +1065,16 @@ static struct class thermal_class = {
* This interface function adds a new thermal cooling device (fan/processor/...)
* to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
* to all the thermal zone devices registered at the same time.
+ * It also gives the opportunity to link the cooling device to a device tree
+ * node, so that it can be bound to a thermal zone created out of device tree.
*
* Return: a pointer to the created struct thermal_cooling_device or an
* ERR_PTR. Caller must check return value with IS_ERR*() helpers.
*/
-struct thermal_cooling_device *
-thermal_cooling_device_register(char *type, void *devdata,
- const struct thermal_cooling_device_ops *ops)
+static struct thermal_cooling_device *
+__thermal_cooling_device_register(struct device_node *np,
+ char *type, void *devdata,
+ const struct thermal_cooling_device_ops *ops)
{
struct thermal_cooling_device *cdev;
int result;
@@ -1094,6 +1099,7 @@ thermal_cooling_device_register(char *type, void *devdata,
strlcpy(cdev->type, type ? : "", sizeof(cdev->type));
mutex_init(&cdev->lock);
INIT_LIST_HEAD(&cdev->thermal_instances);
+ cdev->np = np;
cdev->ops = ops;
cdev->updated = true;
cdev->device.class = &thermal_class;
@@ -1136,9 +1142,53 @@ unregister:
device_unregister(&cdev->device);
return ERR_PTR(result);
}
+
+/**
+ * thermal_cooling_device_register() - register a new thermal cooling device
+ * @type: the thermal cooling device type.
+ * @devdata: device private data.
+ * @ops: standard thermal cooling devices callbacks.
+ *
+ * This interface function adds a new thermal cooling device (fan/processor/...)
+ * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
+ * to all the thermal zone devices registered at the same time.
+ *
+ * Return: a pointer to the created struct thermal_cooling_device or an
+ * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
+ */
+struct thermal_cooling_device *
+thermal_cooling_device_register(char *type, void *devdata,
+ const struct thermal_cooling_device_ops *ops)
+{
+ return __thermal_cooling_device_register(NULL, type, devdata, ops);
+}
EXPORT_SYMBOL_GPL(thermal_cooling_device_register);
/**
+ * thermal_of_cooling_device_register() - register an OF thermal cooling device
+ * @np: a pointer to a device tree node.
+ * @type: the thermal cooling device type.
+ * @devdata: device private data.
+ * @ops: standard thermal cooling devices callbacks.
+ *
+ * This function will register a cooling device with device tree node reference.
+ * This interface function adds a new thermal cooling device (fan/processor/...)
+ * to /sys/class/thermal/ folder as cooling_device[0-*]. It tries to bind itself
+ * to all the thermal zone devices registered at the same time.
+ *
+ * Return: a pointer to the created struct thermal_cooling_device or an
+ * ERR_PTR. Caller must check return value with IS_ERR*() helpers.
+ */
+struct thermal_cooling_device *
+thermal_of_cooling_device_register(struct device_node *np,
+ char *type, void *devdata,
+ const struct thermal_cooling_device_ops *ops)
+{
+ return __thermal_cooling_device_register(np, type, devdata, ops);
+}
+EXPORT_SYMBOL_GPL(thermal_of_cooling_device_register);
+
+/**
* thermal_cooling_device_unregister - removes the registered thermal cooling device
* @cdev: the thermal cooling device to remove.
*
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index b780c5b..f7e11c7 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -25,6 +25,7 @@
#ifndef __THERMAL_H__
#define __THERMAL_H__
+#include <linux/of.h>
#include <linux/idr.h>
#include <linux/device.h>
#include <linux/workqueue.h>
@@ -280,6 +281,9 @@ void thermal_zone_device_update(struct thermal_zone_device *);
struct thermal_cooling_device *thermal_cooling_device_register(char *, void *,
const struct thermal_cooling_device_ops *);
+struct thermal_cooling_device *
+thermal_of_cooling_device_register(struct device_node *np, char *, void *,
+ const struct thermal_cooling_device_ops *);
void thermal_cooling_device_unregister(struct thermal_cooling_device *);
struct thermal_zone_device *thermal_zone_get_zone_by_name(const char *name);
int thermal_zone_get_temp(struct thermal_zone_device *tz, unsigned long *temp);
--
1.8.2.1.342.gfa7285d
next prev parent reply other threads:[~2013-11-12 19:48 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-12 19:46 [PATCHv5 00/20] device thermal limits represented in device tree nodes (v5) Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 01/20] thermal: allow registering without .get_temp Eduardo Valentin
2013-11-12 19:46 ` [PATCHv9 02/20] thermal: introduce device tree parser Eduardo Valentin
[not found] ` <1384285582-16933-3-git-send-email-eduardo.valentin-l0cyMroinI0@public.gmane.org>
2013-11-13 16:57 ` Tomasz Figa
2013-11-14 11:31 ` Eduardo Valentin
2013-11-14 13:40 ` Tomasz Figa
2013-11-15 13:19 ` Eduardo Valentin
2013-11-21 14:57 ` Tomasz Figa
2013-11-21 15:48 ` Eduardo Valentin
2013-11-21 16:32 ` Tomasz Figa
2013-11-22 12:33 ` Eduardo Valentin
[not found] ` <528F4F1E.60903-l0cyMroinI0@public.gmane.org>
2013-11-25 15:31 ` Mark Rutland
[not found] ` <20131125153118.GG32081-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-11-25 15:40 ` Eduardo Valentin
2013-11-25 15:41 ` Eduardo Valentin
2013-11-25 15:14 ` Mark Rutland
2013-11-25 15:34 ` Eduardo Valentin
2013-11-15 8:07 ` [lm-sensors] " Jean Delvare
2013-11-18 6:04 ` Zhang Rui
2013-11-18 14:45 ` Eduardo Valentin
2013-11-19 14:43 ` Jean Delvare
2013-11-25 15:37 ` Mark Rutland
[not found] ` <20131125153721.GH32081-NuALmloUBlrZROr8t4l/smS4ubULX0JqMm0uRHvK7Nw@public.gmane.org>
2013-11-25 15:47 ` Eduardo Valentin
2013-12-31 10:17 ` Wei Ni
[not found] ` <52C299A8.4010108-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2014-01-07 2:48 ` Wei Ni
[not found] ` <52CB6AE2.2090002-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2014-01-07 11:17 ` Eduardo Valentin
2014-01-08 3:19 ` Wei Ni
2014-01-08 3:24 ` Hu Yaohui
[not found] ` <CAHqbYQvchi3QSgcitUtguFyOJtXhFt5OjcoiSDZnPg9ZyiN4cg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-08 4:16 ` Wei Ni
2014-01-02 2:55 ` Wei Ni
2014-01-02 3:03 ` Wei Ni
2014-01-02 2:59 ` Wei Ni
2014-01-02 17:50 ` Matthew Longnecker
2014-01-06 13:51 ` Mark Rutland
2014-01-06 14:54 ` Eduardo Valentin
2014-01-07 2:44 ` Wei Ni
2014-01-07 12:02 ` Mark Rutland
2014-01-13 21:29 ` Eduardo Valentin
2014-01-14 2:54 ` Wei Ni
2014-01-14 18:48 ` Eduardo Valentin
2014-01-13 15:37 ` Eduardo Valentin
2014-01-02 17:35 ` Matthew Longnecker
[not found] ` <52C5A344.2060908-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2014-01-06 18:52 ` Eduardo Valentin
2013-11-12 19:46 ` Eduardo Valentin [this message]
2013-11-12 19:46 ` [PATCHv5 04/20] thermal: cpu_cooling: introduce of_cpufreq_cooling_register Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 05/20] cpufreq: cpufreq-cpu0: add dt node parsing for cooling device properties Eduardo Valentin
2013-11-14 13:17 ` Eduardo Valentin
2013-11-14 22:04 ` Rafael J. Wysocki
2013-11-15 4:41 ` viresh kumar
2014-01-12 14:31 ` Zhang, Rui
2014-01-13 15:08 ` Eduardo Valentin
2014-01-14 19:07 ` Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 06/20] hwmon: lm75: expose to thermal fw via DT nodes Eduardo Valentin
2013-11-15 7:43 ` Jean Delvare
2013-11-18 14:27 ` Eduardo Valentin
2013-11-18 16:25 ` Guenter Roeck
2013-11-18 16:40 ` Eduardo Valentin
2013-11-19 9:39 ` Jean Delvare
2013-11-22 14:37 ` Eduardo Valentin
2013-11-23 18:38 ` Jean Delvare
2013-11-12 19:46 ` [PATCHv5 07/20] hwmon: tmp102: " Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 08/20] thermal: ti-soc-thermal: use thermal DT infrastructure Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 09/20] arm: dts: add omap4 CPU thermal data Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 10/20] arm: dts: add omap4430 " Eduardo Valentin
2013-11-20 12:32 ` Pavel Machek
2013-11-21 15:36 ` Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 11/20] arm: dts: add omap4460 " Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 12/20] arm: dts: add cooling properties on omap4430 cpu node Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 13/20] arm: dts: add cooling properties on omap4460 " Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 14/20] arm: dts: add omap5 GPU thermal data Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 15/20] arm: dts: add omap5 CORE " Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 16/20] arm: dts: add omap5 " Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 17/20] arm: dts: add cooling properties on omap5 cpu node Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 18/20] arm: dts: make OMAP443x bandgap node to belong to OCP Eduardo Valentin
2013-11-12 19:46 ` [PATCHv5 19/20] arm: dts: make OMAP4460 " Eduardo Valentin
[not found] ` <1384285582-16933-1-git-send-email-eduardo.valentin-l0cyMroinI0@public.gmane.org>
2013-11-12 19:46 ` [PATCHv5 20/20] MAINTAINERS: add maintainer entry for thermal bindings Eduardo Valentin
2013-11-12 19:59 ` Olof Johansson
2013-11-12 20:14 ` Eduardo Valentin
2013-11-13 9:42 ` Mark Rutland
2013-11-13 12:17 ` Eduardo Valentin
2013-11-13 14:46 ` Eduardo Valentin
2013-11-14 13:30 ` [PATCHv6 20/20] MAINTAINERS: add thermal bindings entry in thermal domain 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=1384285582-16933-4-git-send-email-eduardo.valentin@ti.com \
--to=eduardo.valentin@ti.com \
--cc=devicetree@vger.kernel.org \
--cc=durgadoss.r@intel.com \
--cc=grant.likely@linaro.org \
--cc=ian.campbell@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=lm-sensors@lm-sensors.org \
--cc=mark.rutland@arm.com \
--cc=pawel.moll@arm.com \
--cc=rob.herring@calxeda.com \
--cc=rui.zhang@intel.com \
--cc=swarren@wwwdotorg.org \
--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).