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>
This commit is contained in:
Eduardo Valentin 2013-08-15 11:34:17 -04:00
parent b82715fdd4
commit ccba4ffd9e
3 changed files with 18 additions and 3 deletions

View File

@ -142,6 +142,11 @@ temperature) and throttle appropriate devices.
This is an optional feature where some platforms can choose not to This is an optional feature where some platforms can choose not to
provide this data. provide this data.
.governor_name: Name of the thermal governor used for this zone .governor_name: Name of the thermal governor used for this zone
.no_hwmon: a boolean to indicate if the thermal to hwmon sysfs interface
is required. when no_hwmon == false, a hwmon sysfs interface
will be created. when no_hwmon == true, nothing will be done.
In case the thermal_zone_params is NULL, the hwmon interface
will be created (for backward compatibility).
.num_tbps: Number of thermal_bind_params entries for this zone .num_tbps: Number of thermal_bind_params entries for this zone
.tbp: thermal_bind_params entries .tbp: thermal_bind_params entries

View File

@ -1462,9 +1462,11 @@ struct thermal_zone_device *thermal_zone_device_register(const char *type,
mutex_unlock(&thermal_governor_lock); mutex_unlock(&thermal_governor_lock);
result = thermal_add_hwmon_sysfs(tz); if (!tz->tzp || !tz->tzp->no_hwmon) {
if (result) result = thermal_add_hwmon_sysfs(tz);
goto unregister; if (result)
goto unregister;
}
mutex_lock(&thermal_list_lock); mutex_lock(&thermal_list_lock);
list_add_tail(&tz->node, &thermal_tz_list); list_add_tail(&tz->node, &thermal_tz_list);

View File

@ -214,6 +214,14 @@ struct thermal_bind_params {
/* Structure to define Thermal Zone parameters */ /* Structure to define Thermal Zone parameters */
struct thermal_zone_params { struct thermal_zone_params {
char governor_name[THERMAL_NAME_LENGTH]; char governor_name[THERMAL_NAME_LENGTH];
/*
* a boolean to indicate if the thermal to hwmon sysfs interface
* is required. when no_hwmon == false, a hwmon sysfs interface
* will be created. when no_hwmon == true, nothing will be done
*/
bool no_hwmon;
int num_tbps; /* Number of tbp entries */ int num_tbps; /* Number of tbp entries */
struct thermal_bind_params *tbp; struct thermal_bind_params *tbp;
}; };