aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduardo Valentin <eduardo.valentin@ti.com>2013-01-02 10:29:39 -0500
committerZhang Rui <rui.zhang@intel.com>2013-01-15 21:46:46 -0500
commit8ab3e6a08a98f7ff18c6814065eb30ba2e000233 (patch)
tree79653389ffbff8e748815ca13a7a925e585ca2a9
parentc076fc42a4d6c51d6422aaf9f6626bf1adf983e7 (diff)
thermal: Use thermal zone device id in netlink messages
This patch changes the function thermal_generate_netlink_event to receive a thermal zone device instead of a originator id. This way, the messages will always be bound to a thermal zone. Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com> Reviewed-by: Durgadoss R <durgadoss.r@intel.com> Signed-off-by: Zhang Rui <rui.zhang@intel.com>
-rw-r--r--Documentation/thermal/sysfs-api.txt5
-rw-r--r--drivers/thermal/thermal_sys.c8
-rw-r--r--include/linux/thermal.h6
3 files changed, 13 insertions, 6 deletions
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index 88c02334e356..526d4b90d6c1 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -329,8 +329,9 @@ The framework includes a simple notification mechanism, in the form of a
329netlink event. Netlink socket initialization is done during the _init_ 329netlink event. Netlink socket initialization is done during the _init_
330of the framework. Drivers which intend to use the notification mechanism 330of the framework. Drivers which intend to use the notification mechanism
331just need to call thermal_generate_netlink_event() with two arguments viz 331just need to call thermal_generate_netlink_event() with two arguments viz
332(originator, event). Typically the originator will be an integer assigned 332(originator, event). The originator is a pointer to struct thermal_zone_device
333to a thermal_zone_device when it registers itself with the framework. The 333from where the event has been originated. An integer which represents the
334thermal zone device will be used in the message to identify the zone. The
334event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL, 335event will be one of:{THERMAL_AUX0, THERMAL_AUX1, THERMAL_CRITICAL,
335THERMAL_DEV_FAULT}. Notification can be sent when the current temperature 336THERMAL_DEV_FAULT}. Notification can be sent when the current temperature
336crosses any of the configured thresholds. 337crosses any of the configured thresholds.
diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 8c8ce806180f..d85f51f433be 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1711,7 +1711,8 @@ static struct genl_multicast_group thermal_event_mcgrp = {
1711 .name = THERMAL_GENL_MCAST_GROUP_NAME, 1711 .name = THERMAL_GENL_MCAST_GROUP_NAME,
1712}; 1712};
1713 1713
1714int thermal_generate_netlink_event(u32 orig, enum events event) 1714int thermal_generate_netlink_event(struct thermal_zone_device *tz,
1715 enum events event)
1715{ 1716{
1716 struct sk_buff *skb; 1717 struct sk_buff *skb;
1717 struct nlattr *attr; 1718 struct nlattr *attr;
@@ -1721,6 +1722,9 @@ int thermal_generate_netlink_event(u32 orig, enum events event)
1721 int result; 1722 int result;
1722 static unsigned int thermal_event_seqnum; 1723 static unsigned int thermal_event_seqnum;
1723 1724
1725 if (!tz)
1726 return -EINVAL;
1727
1724 /* allocate memory */ 1728 /* allocate memory */
1725 size = nla_total_size(sizeof(struct thermal_genl_event)) + 1729 size = nla_total_size(sizeof(struct thermal_genl_event)) +
1726 nla_total_size(0); 1730 nla_total_size(0);
@@ -1755,7 +1759,7 @@ int thermal_generate_netlink_event(u32 orig, enum events event)
1755 1759
1756 memset(thermal_event, 0, sizeof(struct thermal_genl_event)); 1760 memset(thermal_event, 0, sizeof(struct thermal_genl_event));
1757 1761
1758 thermal_event->orig = orig; 1762 thermal_event->orig = tz->id;
1759 thermal_event->event = event; 1763 thermal_event->event = event;
1760 1764
1761 /* send multicast genetlink message */ 1765 /* send multicast genetlink message */
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index 883bcda7e1e4..9b78f8c6f773 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -246,9 +246,11 @@ int thermal_register_governor(struct thermal_governor *);
246void thermal_unregister_governor(struct thermal_governor *); 246void thermal_unregister_governor(struct thermal_governor *);
247 247
248#ifdef CONFIG_NET 248#ifdef CONFIG_NET
249extern int thermal_generate_netlink_event(u32 orig, enum events event); 249extern int thermal_generate_netlink_event(struct thermal_zone_device *tz,
250 enum events event);
250#else 251#else
251static inline int thermal_generate_netlink_event(u32 orig, enum events event) 252static int thermal_generate_netlink_event(struct thermal_zone_device *tz,
253 enum events event)
252{ 254{
253 return 0; 255 return 0;
254} 256}