Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

+18 -3
+5
Documentation/thermal/sysfs-api.txt
··· 142 142 This is an optional feature where some platforms can choose not to 143 143 provide this data. 144 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 150 .num_tbps: Number of thermal_bind_params entries for this zone 146 151 .tbp: thermal_bind_params entries 147 152
+5 -3
drivers/thermal/thermal_core.c
··· 1462 1462 1463 1463 mutex_unlock(&thermal_governor_lock); 1464 1464 1465 - result = thermal_add_hwmon_sysfs(tz); 1466 - if (result) 1467 - goto unregister; 1465 + if (!tz->tzp || !tz->tzp->no_hwmon) { 1466 + result = thermal_add_hwmon_sysfs(tz); 1467 + if (result) 1468 + goto unregister; 1469 + } 1468 1470 1469 1471 mutex_lock(&thermal_list_lock); 1470 1472 list_add_tail(&tz->node, &thermal_tz_list);
+8
include/linux/thermal.h
··· 214 214 /* Structure to define Thermal Zone parameters */ 215 215 struct thermal_zone_params { 216 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 225 int num_tbps; /* Number of tbp entries */ 218 226 struct thermal_bind_params *tbp; 219 227 };