aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEduardo Valentin <eduardo.valentin@ti.com>2013-08-15 11:34:17 -0400
committerEduardo Valentin <eduardo.valentin@ti.com>2013-09-03 09:10:11 -0400
commitccba4ffd9eff6120a20cc7656458ac554aec4b0c (patch)
tree7b6194533c846dd0cac307154a0ee676fe4429ce
parentb82715fdd4a5407f56853b24d387d484dd9c3b5b (diff)
drivers: thermal: make usage of CONFIG_THERMAL_HWMON optional
When registering a new thermal_device, the thermal framework will always add a hwmon sysfs interface. This patch adds a flag to make this behavior optional. Now when registering a new thermal device, the caller can optionally inform if hwmon interface is desirable. This can be done by means of passing a thermal_zone_params.no_hwmon == true. In order to keep same behavior as of today, all current calls will by default create the hwmon interface. Cc: David Woodhouse <dwmw2@infradead.org> Cc: linux-acpi@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Cc: linux-pm@vger.kernel.org Cc: Zhang Rui <rui.zhang@intel.com> Suggested-by: Wei Ni <wni@nvidia.com> Signed-off-by: Eduardo Valentin <eduardo.valentin@ti.com>
-rw-r--r--Documentation/thermal/sysfs-api.txt5
-rw-r--r--drivers/thermal/thermal_core.c8
-rw-r--r--include/linux/thermal.h8
3 files changed, 18 insertions, 3 deletions
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt
index a71bd5b90fe8..37c54863f611 100644
--- a/Documentation/thermal/sysfs-api.txt
+++ b/Documentation/thermal/sysfs-api.txt
@@ -142,6 +142,11 @@ temperature) and throttle appropriate devices.
142 This is an optional feature where some platforms can choose not to 142 This is an optional feature where some platforms can choose not to
143 provide this data. 143 provide this data.
144 .governor_name: Name of the thermal governor used for this zone 144 .governor_name: Name of the thermal governor used for this zone
145 .no_hwmon: a boolean to indicate if the thermal to hwmon sysfs interface
146 is required. when no_hwmon == false, a hwmon sysfs interface
147 will be created. when no_hwmon == true, nothing will be done.
148 In case the thermal_zone_params is NULL, the hwmon interface
149 will be created (for backward compatibility).
145 .num_tbps: Number of thermal_bind_params entries for this zone 150 .num_tbps: Number of thermal_bind_params entries for this zone
146 .tbp: thermal_bind_params entries 151 .tbp: thermal_bind_params entries
147 152
diff --git a/drivers/thermal/thermal_core.c b/drivers/thermal/thermal_core.c
index 247528bbf00c..51648bfb248d 100644
--- a/drivers/thermal/thermal_core.c
+++ b/drivers/thermal/thermal_core.c
@@ -1462,9 +1462,11 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
1462 1462
1463 mutex_unlock(&thermal_governor_lock); 1463 mutex_unlock(&thermal_governor_lock);
1464 1464
1465 result = thermal_add_hwmon_sysfs(tz); 1465 if (!tz->tzp || !tz->tzp->no_hwmon) {
1466 if (result) 1466 result = thermal_add_hwmon_sysfs(tz);
1467 goto unregister; 1467 if (result)
1468 goto unregister;
1469 }
1468 1470
1469 mutex_lock(&thermal_list_lock); 1471 mutex_lock(&thermal_list_lock);
1470 list_add_tail(&tz->node, &thermal_tz_list); 1472 list_add_tail(&tz->node, &thermal_tz_list);
diff --git a/include/linux/thermal.h b/include/linux/thermal.h
index a386a1cbb6e1..b4a975f25be0 100644
--- a/include/linux/thermal.h
+++ b/include/linux/thermal.h
@@ -214,6 +214,14 @@ struct thermal_bind_params {
214/* Structure to define Thermal Zone parameters */ 214/* Structure to define Thermal Zone parameters */
215struct thermal_zone_params { 215struct thermal_zone_params {
216 char governor_name[THERMAL_NAME_LENGTH]; 216 char governor_name[THERMAL_NAME_LENGTH];
217
218 /*
219 * a boolean to indicate if the thermal to hwmon sysfs interface
220 * is required. when no_hwmon == false, a hwmon sysfs interface
221 * will be created. when no_hwmon == true, nothing will be done
222 */
223 bool no_hwmon;
224
217 int num_tbps; /* Number of tbp entries */ 225 int num_tbps; /* Number of tbp entries */
218 struct thermal_bind_params *tbp; 226 struct thermal_bind_params *tbp;
219}; 227};