All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eduardo Valentin <edubezval@gmail.com>
To: Rui Zhang <rui.zhang@intel.com>
Cc: Linux PM <linux-pm@vger.kernel.org>,
	LKML <linux-kernel@vger.kernel.org>,
	Eduardo Valentin <edubezval@gmail.com>
Subject: [PATCH 07/31] thermal: core: move passive attr to tz->device.groups
Date: Tue,  3 May 2016 23:02:21 -0700	[thread overview]
Message-ID: <1462341765-13268-8-git-send-email-edubezval@gmail.com> (raw)
In-Reply-To: <1462341765-13268-1-git-send-email-edubezval@gmail.com>

This patch moves the passive attribute to tz->device.groups. Moving the
passive attribute also requires a .is_visible() callback implementation
for its attribute group.

The logic behind the visibility of passive attribute is kept the same.
We only expose the passive attribute if the thermal driver has exposed
at least one passive trip point.

Cc: Zhang Rui <rui.zhang@intel.com>
Cc: linux-pm@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
---
 drivers/thermal/thermal_core.c | 41 ++++++++++++++++++++++++++++++++---------
 1 file changed, 32 insertions(+), 9 deletions(-)

diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 6e44038..e48c720 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1054,9 +1054,41 @@ static struct attribute_group thermal_zone_mode_attribute_group = {
 	.is_visible = thermal_zone_mode_is_visible,
 };
 
+/* We expose passive only if passive trips are present */
+static struct attribute *thermal_zone_passive_attrs[] = {
+	&dev_attr_passive.attr,
+};
+
+static umode_t thermal_zone_passive_is_visible(struct kobject *kobj,
+					       struct attribute *attr,
+					       int attrno)
+{
+	struct device *dev = container_of(kobj, struct device, kobj);
+	struct thermal_zone_device *tz;
+	enum thermal_trip_type trip_type;
+	int count;
+
+	tz = container_of(dev, struct thermal_zone_device, device);
+
+	for (count = 0; count < tz->trips; count++) {
+		tz->ops->get_trip_type(tz, count, &trip_type);
+
+		if (trip_type == THERMAL_TRIP_PASSIVE)
+			return attr->mode;
+	}
+
+	return 0;
+}
+
+static struct attribute_group thermal_zone_passive_attribute_group = {
+	.attrs = thermal_zone_passive_attrs,
+	.is_visible = thermal_zone_passive_is_visible,
+};
+
 static const struct attribute_group *thermal_zone_attribute_groups[] = {
 	&thermal_zone_attribute_group,
 	&thermal_zone_mode_attribute_group,
+	&thermal_zone_passive_attribute_group,
 	NULL
 };
 
@@ -1841,7 +1873,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 	int trip_temp;
 	int result;
 	int count;
-	int passive = 0;
 	struct thermal_governor *governor;
 
 	if (!type || strlen(type) == 0)
@@ -1902,8 +1933,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 	for (count = 0; count < trips; count++) {
 		if (tz->ops->get_trip_type(tz, count, &trip_type))
 			set_bit(count, &tz->trips_disabled);
-		if (trip_type == THERMAL_TRIP_PASSIVE)
-			passive = 1;
 		if (tz->ops->get_trip_temp(tz, count, &trip_temp))
 			set_bit(count, &tz->trips_disabled);
 		/* Check for bogus trip points */
@@ -1911,12 +1940,6 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
 			set_bit(count, &tz->trips_disabled);
 	}
 
-	if (!passive) {
-		result = device_create_file(&tz->device, &dev_attr_passive);
-		if (result)
-			goto unregister;
-	}
-
 	/* Update 'this' zone's governor information */
 	mutex_lock(&thermal_governor_lock);
 
-- 
2.1.4

  parent reply	other threads:[~2016-05-04  6:09 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-04  6:02 [PATCH 00/31] thermal: reorganizing thermal core Eduardo Valentin
2016-05-04  6:02 ` [PATCH 01/31] thermal: core: prevent zones with no types to be registered Eduardo Valentin
2016-05-04  6:02 ` [PATCH 02/31] thermal: core: group thermal_zone DEVICE_ATTR's declarations Eduardo Valentin
2016-05-04  6:02 ` [PATCH 03/31] thermal: core: group device_create_file() calls that are always created Eduardo Valentin
2016-05-04  6:02 ` [PATCH 04/31] thermal: core: use dev.groups to manage always present tz attributes Eduardo Valentin
2016-05-04  6:02 ` [PATCH 05/31] thermal: core: move emul_temp creation to tz->device.groups Eduardo Valentin
2016-05-04  6:02 ` [PATCH 06/31] thermal: core: move mode attribute " Eduardo Valentin
2016-05-04  6:02 ` Eduardo Valentin [this message]
2016-05-04  6:02 ` [PATCH 08/31] thermal: core: move power actor code out of sysfs I/F section Eduardo Valentin
2016-05-04  6:02 ` [PATCH 09/31] thermal: core: move the trip attrs to the tz " Eduardo Valentin
2016-05-04  6:02 ` [PATCH 10/31] thermal: core: create tz->device.groups dynamically Eduardo Valentin
2016-05-04  6:02 ` [PATCH 11/31] thermal: core: move trips attributes to tz->device.groups Eduardo Valentin
2016-05-04  6:02 ` [PATCH 12/31] thermal: core: remove unnecessary device_remove() calls Eduardo Valentin
2016-05-04  6:02 ` [PATCH 13/31] thermal: core: split passive_store Eduardo Valentin
2016-05-04  6:02 ` [PATCH 14/31] thermal: core: split policy_store Eduardo Valentin
2016-05-04  6:02 ` [PATCH 15/31] thermal: core: split available_policies_show() Eduardo Valentin
2016-05-04  6:02 ` [PATCH 16/31] thermal: core: move to_thermal_zone() macro to header file Eduardo Valentin
2016-05-04  6:02 ` [PATCH 17/31] thermal: core: move thermal_zone sysfs to thermal_sysfs.c Eduardo Valentin
2016-05-04  6:02 ` [PATCH 18/31] thermal: core: move to_cooling_device macro to header file Eduardo Valentin
2016-05-04  6:02 ` [PATCH 19/31] thermal: core: move cooling device sysfs to thermal_sysfs.c Eduardo Valentin
2016-05-04  6:02 ` [PATCH 20/31] thermal: core: introduce thermal_helpers.c Eduardo Valentin
2016-05-17 13:20   ` Zhang, Rui
2016-05-17 14:40     ` Eduardo Valentin
2016-05-30 16:05       ` Eduardo Valentin
2016-05-04  6:02 ` [PATCH 21/31] thermal: core: group functions related to governor handling Eduardo Valentin
2016-05-04  6:02 ` [PATCH 22/31] thermal: core: move idr handling to device management section Eduardo Valentin
2016-05-04  6:02 ` [PATCH 23/31] thermal: core: move __unbind() helper to where it is used Eduardo Valentin
2016-05-04  6:02 ` [PATCH 24/31] thermal: core: move bind_cdev() " Eduardo Valentin
2016-05-04  6:02 ` [PATCH 25/31] thermal: core: move bind_tz() " Eduardo Valentin
2016-05-04  6:02 ` [PATCH 26/31] thermal: core: move __bind() " Eduardo Valentin
2016-05-04  6:02 ` [PATCH 27/31] thermal: core: add inline to print_bind_err_msg() Eduardo Valentin
2016-05-04  6:02 ` [PATCH 28/31] thermal: core: move notify to the zone update section Eduardo Valentin
2016-05-04  6:02 ` [PATCH 29/31] thermal: core: add a comment describing the main update loop Eduardo Valentin
2016-05-04  6:02 ` [PATCH 30/31] thermal: core: add a comment describing the power actor section Eduardo Valentin
2016-05-04  6:02 ` [PATCH 31/31] thermal: core: add a comment describing the device management section 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=1462341765-13268-8-git-send-email-edubezval@gmail.com \
    --to=edubezval@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@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.