diff options
author | Eduardo Valentin <eduardo.valentin@ti.com> | 2013-08-15 11:34:17 -0400 |
---|---|---|
committer | Eduardo Valentin <eduardo.valentin@ti.com> | 2013-09-03 09:10:11 -0400 |
commit | ccba4ffd9eff6120a20cc7656458ac554aec4b0c (patch) | |
tree | 7b6194533c846dd0cac307154a0ee676fe4429ce | |
parent | b82715fdd4a5407f56853b24d387d484dd9c3b5b (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.txt | 5 | ||||
-rw-r--r-- | drivers/thermal/thermal_core.c | 8 | ||||
-rw-r--r-- | include/linux/thermal.h | 8 |
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 */ |
215 | struct thermal_zone_params { | 215 | struct 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 | }; |